<?xml version="1.0"?>
<doc>
    <assembly>
        <name>NPack</name>
    </assembly>
    <members>
        <member name="T:NPack.SingleComponent">
            <summary>
            A matrix component value modeled by a single-precision floating point.
            </summary>
            <remarks>
            Use this structure as the type parameter for <see cref="!:Matrix&lt;T&gt;"/> when you want
            a matrix of single values, since it implements <see cref="T:NPack.Interfaces.IComputable`1"/>, which 
            allows numerical operations on value types.
            </remarks>
        </member>
        <member name="T:NPack.Interfaces.IComputable`1">
            <summary>
            Defines a type which has typical numerically computable properties.
            </summary>
            <typeparam name="T">Type which is computable.</typeparam>
        </member>
        <member name="T:NPack.Interfaces.IArithmetic`1">
            <summary>
            Every class that defines the standard arithmetic operations +, -, *, / should
            consider implementing this interface. This interface does not contain
            <see cref="T:NPack.Interfaces.IInvertible`1"/> because some arithmetic types such as 
            <see cref="T:System.Int32"/>, <see cref="T:System.Int64"/>, 
            etc., do not have an inverse as defined in IInvertible.
            </summary>
            <typeparam name="T">Type which has aritmetic operations defined on.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="T:NPack.Interfaces.INegatable`1">
            <summary>
            Every class that defines a unary - operation
            such that <c>x + (-x) = e</c> and <c>-(-x) = x</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="T">Type which is negatable.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="T:NPack.Interfaces.ISubtractable`1">
            <summary>
            Every class that defines a - operation 
            like <c>T operator - (T a, T b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="T">Type which is subtractable.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.ISubtractable`1.Subtract(`0)">
            <summary>
            Returns the difference of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The difference.</returns>
        </member>
        <member name="T:NPack.Interfaces.IHasZero`1">
            <summary>
            Every class that has a + operation and an element
            such that <code>x + e = e + x = x</code> for all x should consider implementing this 
            interface. If T is a <see cref="T:System.ValueType"/>, e should be the default value. 
            </summary>
            <typeparam name="T">Type which has zero defined.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="T:NPack.Interfaces.IAddable`1">
            <summary>
            Every class that defines a + operation 
            like <c>T operator + (T a, T b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="T">Type which is addable.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IAddable`1.Add(`0)">
            <summary>
            Returns the sum of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The sum.</returns>
        </member>
        <member name="P:NPack.Interfaces.IHasZero`1.Zero">
            <summary>
            Returns the additive identity.
            </summary>
            <value>e</value>
        </member>
        <member name="M:NPack.Interfaces.INegatable`1.Negative">
            <summary>
            Returns the negative of the Object. Must not modify the Object itself.
            </summary>
            <returns>The negative.</returns>
        </member>
        <member name="T:NPack.Interfaces.IDivisible`1">
            <summary>
            Every class that defines a / operation 
            like <c>T operator / (T a, T b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="T">Type which is divisible.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IDivisible`1.Divide(`0)">
            <summary>
            Returns the quotient of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The quotient.</returns>
        </member>
        <member name="T:NPack.Interfaces.IHasOne`1">
            <summary>
            Every class that has a * operation and an element
            such that <code>x * e = e * x = x</code> for all x should consider implementing
            this interface.
            </summary>
            <typeparam name="T">Type which has multiplicative identity defined.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="T:NPack.Interfaces.IMultipliable`1">
            <summary>
            Every class that defines a * operation 
            like <c>T operator * (T a,T b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="T">Type which is multipliable.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IMultipliable`1.Multiply(`0)">
            <summary>
            Returns the product of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The product.</returns>
        </member>
        <member name="P:NPack.Interfaces.IHasOne`1.One">
            <summary>
            Returns the multiplicative identity.
            </summary>
            <value>e</value>
        </member>
        <member name="T:NPack.Interfaces.IBooleanComparable`1">
            <summary>
            Defines a type which can be compared with boolean comparison operations: &gt;, &gt;=, &lt;, or &lt;=.
            </summary>
            <typeparam name="T">Type on which boolean comparison is defined.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IBooleanComparable`1.GreaterThan(`0)">
            <summary>
            Returns true if the value called on is strictly greater than the <paramref name="value"/> given.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the called on instance is greater, false if the <paramref name="value"/> is greater or equal.</returns>
        </member>
        <member name="M:NPack.Interfaces.IBooleanComparable`1.GreaterThanOrEqualTo(`0)">
            <summary>
            Returns true if the value called on is greater than or equal to the <paramref name="value"/> given.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the called on instance is greater or equal, false if the <paramref name="value"/> is greater.</returns>
        </member>
        <member name="M:NPack.Interfaces.IBooleanComparable`1.LessThan(`0)">
            <summary>
            Returns true if the value called on is strictly less than the <paramref name="value"/> given.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the called on instance is less, false if the <paramref name="value"/> is less or equal.</returns>
        </member>
        <member name="M:NPack.Interfaces.IBooleanComparable`1.LessThanOrEqualTo(`0)">
            <summary>
            Returns true if the value called on is less than or equal to the <paramref name="value"/> given.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the called on instance is less or equal, false if the <paramref name="value"/> is less.</returns>
        </member>
        <member name="T:NPack.Interfaces.IExponential`1">
            <summary>
            Defines a type which can be operated on by exponential operations.
            </summary>
            <typeparam name="T">Type on which exponentiation is defined.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IExponential`1.Power(System.Double)">
            <summary>
            Returns a value which is the called on value raised to the given <paramref name="exponent"/>.
            </summary>
            <param name="exponent">The power to raise the value by.</param>
            <value>x ^ <c>exponent</c></value>
            <returns>The value called on raised to the power given.</returns>
        </member>
        <member name="M:NPack.Interfaces.IExponential`1.Sqrt">
            <summary>
            Returns a value which is the square root of the value called on.
            </summary>
            <value>x ^ 0.5</value>
            <returns>The value called on raised to the power of 0.5.</returns>
        </member>
        <member name="M:NPack.Interfaces.IExponential`1.Log(System.Double)">
            <summary>
            Returns a value which is the natural log of the called-on value given the new base.
            </summary>
            <param name="newBase">New base to find what the called-on value is the exponent of.</param>
            <value>ln <c>value</c> / ln <c>newBase</c></value>
            <returns>The log</returns>
        </member>
        <member name="M:NPack.Interfaces.IExponential`1.Log">
            <summary>
            Returns a value which is the natural log of the called-on value.
            </summary>
            <value>ln <c>value</c></value>
            <returns>The natural log of the given value.</returns>
        </member>
        <member name="M:NPack.Interfaces.IExponential`1.Exp">
            <summary>
            Returns <c>e</c> raised to the power of the called on value.
            </summary>
            <value>e ^ <c>value</c></value>
            <returns>The value of the natural log base, e, raised to the power of the called on value.</returns>
        </member>
        <member name="M:NPack.Interfaces.IComputable`1.Abs">
            <summary>
            Computes the absolute value of the value.
            </summary>
            <returns>The absolute value of the IComputable value.</returns>
        </member>
        <member name="M:NPack.Interfaces.IComputable`1.Set(System.Double)">
            <summary>
            Sets the value of the IComputable value.
            </summary>
            <param name="value">Value used to set the IComputable.</param>
            <returns>The value of the IComputable converted from <paramref name="value"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.#ctor(System.Single)">
            <summary>
            Creates a new SingleComponent initialized to the given 
            <paramref name="value"/>.
            </summary>
            <param name="value">
            The value to set this SingleComponent to.
            </param>
        </member>
        <member name="M:NPack.SingleComponent.ToString">
            <summary>
            Returns String representation of this value.
            </summary>
            <returns>A formatted String displaying this value.</returns>
        </member>
        <member name="M:NPack.SingleComponent.GetHashCode">
            <summary>
            Generates a hash code for the SingleComponent value.
            </summary>
            <returns>A value to represent this value in a hash table.</returns>
        </member>
        <member name="M:NPack.SingleComponent.op_Implicit(System.Single)~NPack.SingleComponent">
            <summary>
            Implicitly converts a Single value to a SingleComponent.
            </summary>
            <param name="value">Value to convert.</param>
            <returns>
            A SingleComponent set to <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.op_Explicit(NPack.SingleComponent)~System.Single">
            <summary>
            Explicitly converts a SingleComponent to a Single.
            </summary>
            <param name="component">SingleComponent to convert.</param>
            <returns>
            Value of type Single with the same value as the SingleComponent.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.op_Addition(NPack.SingleComponent,System.Single)">
            <summary>
            Adds a SingleComponent and a Single.
            </summary>
            <param name="lhs">Left hand of the addition operation.</param>
            <param name="rhs">Right hand of the addition operation.</param>
            <returns>
            The sum of <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.op_Subtraction(NPack.SingleComponent,System.Single)">
            <summary>
            Subtracts a Single from a SingleComponent.
            </summary>
            <param name="lhs">Left hand of the subtraction operation.</param>
            <param name="rhs">Right hand of the subtraction operation.</param>
            <returns>
            The difference of <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Equals(NPack.SingleComponent)">
            <summary>
            Evaluates equality of two SingleComponent instances.
            </summary>
            <param name="other">The SingleComponent to compare to.</param>
            <returns>
            True if the two SingleComponent instances are equal; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.CompareTo(NPack.SingleComponent)">
            <summary>
            Compares two SingleComponent instances.
            </summary>
            <param name="other">The SingleComponent to compare to.</param>
            <returns>
            0 if they are equal,
            1 if the called-on instance is greater, 
            -1 if <paramref name="other"/> is greater.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Add(NPack.SingleComponent)">
            <summary>
            Adds two SingleComponent values.
            </summary>
            <param name="a">The other addend.</param>
            <returns>
            The sum of this SingleComponent and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Subtract(NPack.SingleComponent)">
            <summary>
            Subtracts two SingleComponent values.
            </summary>
            <param name="a">The subtrahend.</param>
            <returns>
            The difference of this SingleComponent (minuend) and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Negative">
            <summary>
            Returns the negation of the SingleComponent value. Also the
            additive inverse.
            </summary>
            <remarks>
            The value returns solves the following equation:
            <code>
            SingleComponent a = 5, b = a.Negative();
            
            Assert.IsTrue(a.Add(b).Equals(0));
            </code>
            </remarks>
            <returns>The negated SingleComponent.</returns>
        </member>
        <member name="M:NPack.SingleComponent.Multiply(NPack.SingleComponent)">
            <summary>
            Multiplies two SingleComponents and returns the product.
            </summary>
            <param name="a">The multiplier.</param>
            <returns>
            The product of the SingleComponent instance and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Divide(NPack.SingleComponent)">
            <summary>
            Divides two SingleComponent instances and returns the quotient.
            </summary>
            <param name="a">The divisor.</param>
            <returns>
            The quotient of dividing the SingleComponent instance
            (the dividend) and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Equals(System.Single)">
            <summary>
            Evaluates equality of a SingleComponent instance and a Single value.
            </summary>
            <param name="other">The Single value to compare to.</param>
            <returns>
            True if the two SingleComponent instances are equal; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.CompareTo(System.Single)">
            <summary>
            Compares a SingleComponent instance and a Single value.
            </summary>
            <param name="other">The Single value to compare to.</param>
            <returns>
            0 if they are equal,
            1 if the SingleComponent instance is greater, 
            -1 if <paramref name="other"/> is greater.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Add(System.Single)">
            <summary>
            Adds a SingleComponent value and a Single.
            </summary>
            <param name="a">The other addend.</param>
            <returns>
            The sum of this SingleComponent and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Subtract(System.Single)">
            <summary>
            Subtracts a Single value from the SingleComponent value.
            </summary>
            <param name="a">The subtrahend.</param>
            <returns>
            The difference of this SingleComponent (minuend) and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#INegatable{System#Single}#Negative">
            <summary>
            Returns the negation of the SingleComponent value as a Single. Also the
            additive inverse.
            </summary>
            <remarks>
            The value returns solves the following equation:
            <code>
            SingleComponent a = 5, b = a.Negative();
            
            Assert.IsTrue(a.Add(b).Equals(0));
            </code>
            </remarks>
            <returns>The negated SingleComponent as a Single.</returns>
        </member>
        <member name="M:NPack.SingleComponent.Multiply(System.Single)">
            <summary>
            Multiplies the SingleComponent with Single and returns the product.
            </summary>
            <param name="a">The multiplier.</param>
            <returns>
            The product of the SingleComponent instance and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Divide(System.Single)">
            <summary>
            Divides the SingleComponent by a Single and returns the quotient.
            </summary>
            <param name="a">The divisor.</param>
            <returns>
            The quotient of dividing the SingleComponent instance
            (the dividend) and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.GreaterThan(NPack.SingleComponent)">
            <summary>
            Evaluates if the SingleComponent instance is greater than 
            the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the SingleComponent instance is greater
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.SingleComponent.GreaterThanOrEqualTo(NPack.SingleComponent)">
            <summary>
            Evaluates if the SingleComponent instance is greater than 
            or equal to the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the SingleComponent instance is greater
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.LessThan(NPack.SingleComponent)">
            <summary>
            Evaluates if the SingleComponent instance is less than 
            the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the SingleComponent instance is less
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.SingleComponent.LessThanOrEqualTo(NPack.SingleComponent)">
            <summary>
            Evaluates if the SingleComponent instance is less than 
            or equal to the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the SingleComponent instance is less
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.GreaterThan(System.Single)">
            <summary>
            Evaluates if the SingleComponent instance is greater than 
            the given Single value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the SingleComponent instance is greater
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.SingleComponent.GreaterThanOrEqualTo(System.Single)">
            <summary>
            Evaluates if the SingleComponent instance is greater than 
            or equal to the given Single value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the SingleComponent instance is greater
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.LessThan(System.Single)">
            <summary>
            Evaluates if the SingleComponent instance is less than 
            the given Single value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the SingleComponent instance is less
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.SingleComponent.LessThanOrEqualTo(System.Single)">
            <summary>
            Evaluates if the SingleComponent instance is less than 
            or equal to the given Single value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the SingleComponent instance is less
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Power(System.Double)">
            <summary>
            Raises the SingleComponent value to the given exponent.
            <paramref name="power"/>.
            </summary>
            <param name="power">
            The value of the exponent.
            </param>
            <returns>
            The value of the SingleComponent (the base) 
            raised to the given power.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Sqrt">
            <summary>
            Computes the value of the square root of the SingleComponent.
            </summary>
            <returns>
            The value of the square root of the SingleComponent.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Log(System.Double)">
            <summary>
            Computes the log of the SingleComponent in the
            <paramref name="newBase">given base</paramref>.
            </summary>
            <param name="newBase">The base to compute the log in.</param>
            <returns>
            The log of the SingleComponent in the new base given.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Log">
            <summary>
            Computes the log of the SingleComponent in base e.
            </summary>
            <returns>The natural log of the SingleComponent.</returns>
        </member>
        <member name="M:NPack.SingleComponent.Exp">
            <summary>
            Computes e to the power of the SingleComponent.
            </summary>
            <returns>
            The natural log base, e, raised to the power 
            of the value of the SingleComponent.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IExponential{System#Single}#Power(System.Double)">
            <summary>
            Raises the SingleComponent value to the given 
            exponent, returned as a Single.
            <paramref name="power"/>.
            </summary>
            <param name="power">
            The value of the exponent.
            </param>
            <returns>
            The value of the SingleComponent (the base) 
            raised to the given power.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IExponential{System#Single}#Sqrt">
            <summary>
            Computes the value of the square root of the SingleComponent,
            returned as a Single.
            </summary>
            <returns>
            The value of the square root of the SingleComponent.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IExponential{System#Single}#Log(System.Double)">
            <summary>
            Computes the log of the SingleComponent in the
            <paramref name="newBase">given base</paramref>, 
            returned as a Single.
            </summary>
            <param name="newBase">The base to compute the log in.</param>
            <returns>
            The log of the SingleComponent in the new base given.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IExponential{System#Single}#Log">
            <summary>
            Computes the log of the SingleComponent in base e,
            returned as a Single.
            </summary>
            <returns>The natural log of the SingleComponent.</returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IExponential{System#Single}#Exp">
            <summary>
            Computes e to the power of the SingleComponent,
            returned as a Single.
            </summary>
            <returns>
            The natural log base, e, raised to the power 
            of the value of the SingleComponent.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Abs">
            <summary>
            Computes the absolute value of the SingleComponent.
            </summary>
            <returns>
            The absolute value of the SingleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.Set(System.Double)">
            <summary>
            Sets the value of the SingleComponent.
            </summary>
            <param name="value">
            The value to set the SingleComponent to, cast to a Single.
            </param>
            <returns>
            A SingleComponent with the given <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IComputable{System#Single}#Abs">
            <summary>
            Computes the absolute value of the SingleComponent,
            returned as a Single.
            </summary>
            <returns>
            The absolute value of the SingleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.NPack#Interfaces#IComputable{System#Single}#Set(System.Double)">
            <summary>
            Computes the absolute value of the SingleComponent,
            returned as a Single.
            </summary>
            <returns>
            The absolute value of the SingleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.GetTypeCode">
            <summary>
            Gets the TypeCode value for the SingleComponent.
            </summary>
            <returns><see cref="F:System.TypeCode.Single"/></returns>
        </member>
        <member name="M:NPack.SingleComponent.ToBoolean(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Boolean"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Boolean"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToByte(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Byte"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Byte"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToChar(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Char"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Char"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToDateTime(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.DateTime"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.DateTime"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToDecimal(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Decimal"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Decimal"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToDouble(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Double"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToInt16(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Int16"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Int16"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToInt32(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Int32"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Int32"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToInt64(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Int64"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Int64"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToSByte(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.SByte"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.SByte"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToSingle(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.Single"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.Single"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToString(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.String"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.String"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToType(System.Type,System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a value of the given type.
            </summary>
            <param name="conversionType">
            Type to convert to.
            </param>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>
            The SingleComponent as a value of <paramref name="conversionType"/>.
            </returns>
        </member>
        <member name="M:NPack.SingleComponent.ToUInt16(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.UInt16"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.UInt16"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToUInt32(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.UInt32"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.UInt32"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToUInt64(System.IFormatProvider)">
            <summary>
            Converts the SingleComponent to a <see cref="T:System.UInt64"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the SingleComponent value.
            </param>
            <returns>The SingleComponent as a <see cref="T:System.UInt64"/>.</returns>
        </member>
        <member name="M:NPack.SingleComponent.ToString(System.String,System.IFormatProvider)">
            <summary>
            Generates a String representation of the SingleComponent.
            </summary>
            <param name="format">The format String to use in formatting.</param>
            <param name="formatProvider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help format the SingleComponent value.
            </param>
            <returns>
            A formatted String which represents the SingleComponent value.
            </returns>
        </member>
        <member name="P:NPack.SingleComponent.Zero">
            <summary>
            Returns the zero value for a SingleComponent. Equal to 0F.
            </summary>
        </member>
        <member name="P:NPack.SingleComponent.One">
            <summary>
            Returns the multiplicative identity.
            </summary>
        </member>
        <member name="P:NPack.SingleComponent.NPack#Interfaces#IHasZero{System#Single}#Zero">
            <summary>
            Gets the additive identity as a Single: 0F.
            </summary>
        </member>
        <member name="P:NPack.SingleComponent.NPack#Interfaces#IHasOne{System#Single}#One">
            <summary>
            Gets the multiplicative identity as a Single: 1F.
            </summary>
        </member>
        <member name="T:NPack.Interfaces.IMultipliable`2">
            <summary>
            Every class that defines a * operation 
            like <c>TProduct operator * (IMultipliable`2 a, TFactor b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="TFactor">
            Type which multiplies the <see cref="T:NPack.Interfaces.IMultipliable`2"/> instance.
            </typeparam>
            <typeparam name="TProduct">Result type of the multiplication operation.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IMultipliable`2.Multiply(`0)">
            <summary>
            Returns the product of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The factor to multiply by.</param>
            <returns>The product.</returns>
        </member>
        <member name="T:NPack.Interfaces.IFactorization`2">
            <summary>
            Provides an interface for a factorization of a matrix.
            </summary>
            <typeparam name="TComponent">Type of matrix element.</typeparam>
            <typeparam name="TMatrix">Type of matrix.</typeparam>
        </member>
        <member name="P:NPack.Interfaces.IFactorization`2.InputMatrix">
            <summary>
            Gets the matrix which was factored (or decomposed).
            </summary>
        </member>
        <member name="T:NPack.Interfaces.IVector`2">
            <summary>
            A vector.
            </summary>
            <typeparam name="TComponent">Type of components in the vector.</typeparam>
            <typeparam name="TVector">Type of vector.</typeparam>
        </member>
        <member name="T:NPack.Interfaces.IMatrix`1">
            <summary>
            An interface to a generic matrix.
            </summary>
            <typeparam name="T">Type of element in the matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`1.Clone">
            <summary>
            Makes an element-by-element copy of the matrix.
            </summary>
            <returns>An exact copy of the matrix.</returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`1.GetMatrix(System.Int32[],System.Int32,System.Int32)">
            <summary>
            Gets a submatrix.
            </summary>
            <param name="rowIndexes">The indexes of the rows to include.</param>
            <param name="startColumn">The starting column to include.</param>
            <param name="endColumn">The ending column to include.</param>
            <returns>
            A submatrix with rows given by <paramref name="rowIndexes"/> and columns 
            <paramref name="startColumn"/> through <paramref name="endColumn"/>.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`1.Transpose">
            <summary>
            Returns the transpose of the matrix.
            </summary>
            <returns>The matrix with the rows as columns and columns as rows.</returns>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.Determinant">
            <summary>
            Gets the determinant for the matrix, if it exists.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.ColumnCount">
            <summary>
            Gets the number of columns in the matrix.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.Format">
            <summary>
            Gets the format of the matrix, either row-major or column-major.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.IsSingular">
            <summary>
            Gets true if the matrix is singular (non-invertible).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.IsInvertible">
            <summary>
            Gets true if the matrix is invertible (non-singular).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.Inverse">
            <summary>
            Gets the inverse of the matrix, if one exists.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.IsSquare">
            <summary>
            Gets true if the matrix is square (<c>RowCount == ColumnCount != 0</c>).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.IsSymmetrical">
            <summary>
            Gets true if the matrix is symmetrical.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.RowCount">
            <summary>
            Gets the number of rows in the matrix.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`1.Item(System.Int32,System.Int32)">
            <summary>
            Gets or sets an element in the matrix.
            </summary>
            <param name="row">The index of the row of the element.</param>
            <param name="column">The index of the column of the element.</param>
            <returns>The value of the element at the specified row and column.</returns>
        </member>
        <member name="T:NPack.Interfaces.IComputable`2">
            <summary>
            Defines a type which has typical numerically computable properties.
            </summary>
            <typeparam name="TInput">Input type of argument.</typeparam>
            <typeparam name="TOutput">Result type of computation.</typeparam>
        </member>
        <member name="T:NPack.Interfaces.IAddable`2">
            <summary>
            Every class that defines a + operation 
            like <c>TSum operator + (IAddable`2 a, TAddend b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="TAddend">Type which is can be added to this type.</typeparam>
            <typeparam name="TSum">Type which the result of the addition.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IAddable`2.Add(`0)">
            <summary>
            Returns the sum of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The sum.</returns>
        </member>
        <member name="T:NPack.Interfaces.ISubtractable`2">
            <summary>
            Every class that defines a - operation 
            like <c>TDifference operator - (ISubtractable`2 a, TSubtrahend b)</c> 
            should consider implementing this interface.
            </summary>
            <typeparam name="TSubtrahend">Type which subracts from this type.</typeparam>
            <typeparam name="TDifference">Type which is the result of subtraction.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.ISubtractable`2.Subtract(`0)">
            <summary>
            Returns the difference of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The difference.</returns>
        </member>
        <member name="T:NPack.Interfaces.IDivisible`2">
            <summary>
            Every class that defines a / operation 
            like <c>TQuotient operator / (IDivisible`2 a, TDivisor b)</c> should consider
            implementing this interface.
            </summary>
            <typeparam name="TDivisor">
            Type which divides the <see cref="T:NPack.Interfaces.IDivisible`2"/> instance.
            </typeparam>
            <typeparam name="TQuotient">Result type of the division operation.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IDivisible`2.Divide(`0)">
            <summary>
            Returns the quotient of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The quotient.</returns>
        </member>
        <member name="M:NPack.Interfaces.IComputable`2.Set(`0)">
            <summary>
            Sets the value of the IComputable value.
            </summary>
            <param name="value">Value used to set the IComputable.</param>
            <returns>The value of the IComputable converted from <paramref name="value"/>.</returns>
        </member>
        <member name="M:NPack.Interfaces.IVector`2.Clone">
            <summary>
            Creates a component-by-component copy of the vector.
            </summary>
            <returns>A copy of the vector.</returns>
        </member>
        <member name="M:NPack.Interfaces.IVector`2.Negative">
            <summary>
            Returns the vector multiplied by -1.
            </summary>
            <returns>The vector when multiplied by -1.</returns>
        </member>
        <member name="P:NPack.Interfaces.IVector`2.ComponentCount">
            <summary>
            Gets the number of components in the vector.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IVector`2.Components">
            <summary>
            Gets or sets the vector component array.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IVector`2.Item(System.Int32)">
            <summary>
            Gets or sets a component in the vector.
            </summary>
            <param name="index">The index of the component.</param>
            <returns>The value of the component at the given <paramref name="index"/>.</returns>
        </member>
        <member name="T:NPack.Interfaces.IAffineTransformMatrix`1">
            <summary>
            An interface to an affine transformation matrix.
            </summary>
            <typeparam name="T">Type of element in the matrix.</typeparam>
        </member>
        <member name="T:NPack.Interfaces.ITransformMatrix`1">
            <summary>
            Provides the interface for linearly transforming a matrix.
            </summary>
            <typeparam name="T">Type of component in the matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Scale(`0)">
            <summary>
            Scales the matrix by the given <paramref name="amount"/> in all orthoganal columns.
            </summary>
            <param name="amount">Amount to scale by.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Scale(`0,NPack.MatrixOperationOrder)">
            <summary>
            Scales the matrix by the given <paramref name="amount"/> in all orthoganal columns.
            </summary>
            <param name="amount">Amount to scale by.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Scale(NPack.Interfaces.IVector{`0})">
            <summary>
            Scales the matrix by the given vector <paramref name="scaleVector"/>.
            </summary>
            <param name="scaleVector">
            A vector with scaling components which 
            correspond to the affine transform dimensions.
            </param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Scale(NPack.Interfaces.IVector{`0},NPack.MatrixOperationOrder)">
            <summary>
            Scales the matrix by the given vector <paramref name="scaleVector"/>.
            </summary>
            <param name="scaleVector">
            A vector with scaling components which 
            correspond to the affine transform dimensions.
            </param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Shear(NPack.Interfaces.IVector{`0})">
            <summary>
            Applies a shear to the transform.
            </summary>
            <param name="shearVector">The vector used to compute the shear.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.Shear(NPack.Interfaces.IVector{`0},NPack.MatrixOperationOrder)">
            <summary>
            Applies a shear to the transform.
            </summary>
            <param name="shearVector">The vector used to compute the shear.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.RotateAlong(NPack.Interfaces.IVector{`0},System.Double)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/>.
            </summary>
            <param name="axis">
            The axis to rotate around. May be an addition of the basis vectors.
            </param>
            <param name="radians">Angle to rotate through.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.RotateAlong(NPack.Interfaces.IVector{`0},System.Double,NPack.MatrixOperationOrder)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/>.
            </summary>
            <param name="axis">
            The axis to rotate around. May be an addition of the basis vectors.
            </param>
            <param name="radians">Angle to rotate through.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.TransformMatrix(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Applies this transform to the given <paramref name="input"/> matrix.
            </summary>
            <param name="input">Matrix to transform.</param>
            <returns>
            The multiplication of this transform matrix with the input matrix.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.TransformVector(NPack.Interfaces.IVector{`0})">
            <summary>
            Applies this transform to the given <paramref name="input"/> vector.
            </summary>
            <param name="input">Vector to transform.</param>
            <returns>
            The multiplication of this transform matrix with the input vector.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.TransformVector(`0[])">
            <summary>
            Applies this transform to the given <paramref name="input"/> vector in place.
            </summary>
            <param name="input">Vector to transform.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.TransformVectors(System.Collections.Generic.IEnumerable{NPack.Interfaces.IVector{`0}})">
            <summary>
            Applies this transform to the given <paramref name="input"/> vectors.
            </summary>
            <param name="input">Set of vectors to transform.</param>
            <returns>
            The multiplication of this transform matrix with each of the input vectors.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`1.TransformVectors(System.Collections.Generic.IEnumerable{`0[]})">
            <summary>
            Applies this transform to the given <paramref name="input"/> vectors in place.
            </summary>
            <param name="input">Set of vectors to transform.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.Reset">
            <summary>
            Resets the affine transform to the identity matrix (a diagonal of one).
            </summary>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.RotateAt(NPack.Interfaces.IVector{`0},NPack.Interfaces.IVector{`0},System.Double)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/> 
            at the given <paramref name="point"/>.
            </summary>
            <param name="point">Point at which to compute the rotation.</param>
            <param name="axis">The axis to rotate around.</param>
            <param name="radians">Angle to rotate through.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.RotateAt(NPack.Interfaces.IVector{`0},NPack.Interfaces.IVector{`0},System.Double,NPack.MatrixOperationOrder)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/> 
            at the given <paramref name="point"/>.
            </summary>
            <param name="point">Point at which to compute the rotation.</param>
            <param name="axis">The axis to rotate around.</param>
            <param name="radians">Angle to rotate through.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.Translate(`0)">
            <summary>
            Translates the affine transform by the given amount in each dimension.
            </summary>
            <param name="amount">Amount to translate by.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.Translate(`0,NPack.MatrixOperationOrder)">
            <summary>
            Translates the affine transform by the given amount in each dimension.
            </summary>
            <param name="amount">Amount to translate by.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.Translate(NPack.Interfaces.IVector{`0})">
            <summary>
            Translates the affine transform by the given translation vector.
            </summary>
            <param name="translateVector">
            A vector whose components will translate the transform 
            in the corresponding dimension.
            </param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`1.Translate(NPack.Interfaces.IVector{`0},NPack.MatrixOperationOrder)">
            <summary>
            Translates the affine transform by the given translation vector.
            </summary>
            <param name="translateVector">
            A vector whose components will translate the transform 
            in the corresponding dimension.
            </param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="P:NPack.Interfaces.IAffineTransformMatrix`1.Inverse">
            <summary>
            Gets the inverse of the affine transform.
            </summary>
        </member>
        <member name="T:NPack.DoubleComplexComponent">
            <summary>
            A matrix component or matrix element which represents a complex number with a 
            <see cref="T:System.Double"/> real component and imaginary coefficient.
            </summary>
            <remarks>
            Use this structure as the type parameter for <see cref="!:Matrix&lt;T&gt;"/> when you want
            a matrix of Double floating point complex values, since it implements <see cref="T:NPack.Interfaces.IComputable`1"/>, 
            which allows numerical operations on value types.
            </remarks>
        </member>
        <member name="T:NPack.HouseholderReflectionQrDecomposition`2">
            <summary>
            QR decomposition for a rectangular matrix.
            </summary>
            <remarks>
            <para>
            For an m-by-n Matrix{T} <c>A</c> with <c>m &gt;= n</c>, the QR decomposition is an m-by-n
            orthogonal Matrix{T} <c>Q</c> and an n-by-n upper triangular 
            Matrix{T} <c>R</c> so that <c>A = Q * R</c>.
            </para>
            <para>
            The QR decompostion always exists, even if the Matrix{T} does not have
            full rank, so the constructor will never fail.  The primary use of the
            QR decomposition is in the least squares solution of non-square systems
            of simultaneous linear equations. It is well-suited to computation due to the
            fact that the Q matrix in the decomposition is an orthogonal matrix, allowing
            errors that arise in its computation to be removed by reforming it to orthogonality.
            </para>
            </remarks>
        </member>
        <member name="M:NPack.HouseholderReflectionQrDecomposition`2.#ctor(`1,NPack.Interfaces.IMatrixFactory{`0,`1})">
            <summary>
            Construct a QR decomposition.
            </summary>	
        </member>
        <member name="M:NPack.HouseholderReflectionQrDecomposition`2.Solve(`1)">
            <summary>
            Least squares solution of <c>A * X = B</c>.
            </summary>
            <param name="value">
            Right-hand-side Matrix{T} with as many rows as <c>A</c> and any number of columns.
            </param>
            <returns>
            A Matrix{T} that minimized the two norm of <c>Q * R * X - B</c>.
            </returns>
            <exception cref="T:System.ArgumentException">
            Matrix{T} row dimensions must be the same.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Matrix{T} is rank deficient.
            </exception>
        </member>
        <member name="P:NPack.HouseholderReflectionQrDecomposition`2.IsFullRank">
            <summary>
            Gets a value which indicates if the Matrix{T} <c>A</c> is of full rank.
            </summary>
            <value>
            <see langword="true"/> if <c>R</c>, and hence <c>A</c>, has full rank; 
            <see langword="false"/> otherwise.
            </value>
        </member>
        <member name="P:NPack.HouseholderReflectionQrDecomposition`2.Q">
            <summary>
            Returns the orthogonal factor <c>Q</c>.
            </summary>
        </member>
        <member name="P:NPack.HouseholderReflectionQrDecomposition`2.R">
            <summary>
            Returns the upper triangular factor <c>R</c>.
            </summary>
        </member>
        <member name="T:NPack.LUDecomposition`2">
            <summary>
            LU decomposition of a rectangular matrix.
            </summary>
            <typeparam name="T">The type of the matrix element.</typeparam>
            <remarks>
            <para>
            For an m-by-n Matrix{T} <c>A</c> with m &gt;= n, the LU decomposition is an m-by-n
            unit lower triangular Matrix{T} <c>L</c>, an n-by-n upper triangular Matrix{T} <c>U</c>,
            and a permutation vector <c>Pivot</c> of length m so that <c>Pivot * A = L * U</c>.
            If m &lt; n, then <c>L</c> is m-by-m and <c>U</c> is m-by-n.
            </para>
            <para>
            The LU decompostion with pivoting always exists, even if the Matrix{T} is
            singular, so the constructor will never fail.  The primary use of the
            LU decomposition is in the solution of square systems of simultaneous
            linear equations. There is no solution, or infinite solutions if 
            <see cref="P:NPack.LUDecomposition`2.IsNonsingular"/> returns <see langword="false"/>.
            </para>
            </remarks>
        </member>
        <member name="M:NPack.LUDecomposition`2.#ctor(`1,NPack.Interfaces.IMatrixFactory{`0,`1})">
            <summary>
            Create a new LU decomposition.
            </summary>	
        </member>
        <member name="M:NPack.LUDecomposition`2.Solve(`1)">
            <summary>
            Solves a set of equation systems of type <c>A * X = B</c>.
            </summary>
            <param name="value">
            Right hand side <see cref="!:Matrix&lt;T&gt;"/> with as many rows as 
            <c>A</c> and any number of columns.
            </param>
            <returns>
            <see cref="!:Matrix&lt;T&gt;"/> <c>X</c> so that <c>L * U * X = B</c>.
            </returns>
        </member>
        <member name="P:NPack.LUDecomposition`2.IsNonsingular">
            <summary>
            Gets true if the <see cref="!:Matrix&lt;T&gt;"/> is non-singular, 
            false if singular (non-invertible).
            </summary>
        </member>
        <member name="P:NPack.LUDecomposition`2.Determinant">
            <summary>
            Gets the determinant of the matrix.
            </summary>
            <exception cref="T:System.InvalidOperationException">Thrown if the matrix used to compute the factorization is non-square.</exception>
        </member>
        <member name="P:NPack.LUDecomposition`2.L">
            <summary>
            Gets the lower triangular matrix <c>L</c> such that 
            <c>A * <see cref="P:NPack.LUDecomposition`2.Pivot"/> = L * <see cref="P:NPack.LUDecomposition`2.U"/></c>.
            </summary>
        </member>
        <member name="P:NPack.LUDecomposition`2.U">
            <summary>
            Gets the lower triangular matrix <c>L</c> such that 
            <c>A * <see cref="P:NPack.LUDecomposition`2.Pivot"/> = <see cref="P:NPack.LUDecomposition`2.L"/> * U</c>.
            </summary>
        </member>
        <member name="P:NPack.LUDecomposition`2.Pivot">
            <summary>
            Gets the pivot permutation matrix.
            </summary>
        </member>
        <member name="T:NPack.Interfaces.IMatrixOperations`3">
            <summary>
            Provides an interface for an implementation to compute matrix operations.
            </summary>
            <typeparam name="TComponent">Type of matrix element.</typeparam>
            <typeparam name="TVector">Type of vector.</typeparam>
            <typeparam name="TMatrix">Type of matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Add(`2,`2)">
            <summary>
            Adds two matrixes and returns the result.
            </summary>
            <param name="lhs">First matrix to add.</param>
            <param name="rhs">Second matrix to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Add(`1,`1)">
            <summary>
            Adds two vectors and returns the result.
            </summary>
            <param name="lhs">First vector to add.</param>
            <param name="rhs">Second vector to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Subtract(`2,`2)">
            <summary>
            Subtracts two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the subtraction operation.</param>
            <param name="rhs">Matrix on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Subtract(`1,`1)">
            <summary>
            Subtracts two vectors and returns the result.
            </summary>
            <param name="lhs">Vector on the left of the subtraction operation.</param>
            <param name="rhs">Vector on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Dot(`1,`1)">
            <summary>
            Computes the inner-product (dot product) of two vectors and returns the result.
            </summary>
            <param name="lhs">The vector on the left hand of the inner product.</param>
            <param name="rhs">The vector on the right hand of the inner product.</param>
            <value>lhs · rhs</value>
            <returns>
            The product of computing the inner product of 
            <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Cross(`1,`1)">
            <summary>
            Computes the outer-product (cross product) of two vectors and returns the result.
            </summary>
            <param name="lhs">The vector on the left hand of the outer product.</param>
            <param name="rhs">The vector on the right hand of the outer product.</param>
            <value>lhs ⊗ rhs</value>
            <returns>
            The product of computing the outer product of 
            <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,`2)">
            <summary>
            Multiplies two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <returns>
            The product of multiplying <paramref name="lhs"/> by <paramref name="rhs"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2@,`2)">
            <summary>
            Multiplies two matrixes, with the result stored in the left matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,`2@)">
            <summary>
            Multiplies two matrixes, with the result stored in the right matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,`1)">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVector">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`1,`2)">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVector">The row vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,`0[])">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVector">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`0[],`2)">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVector">The row vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`2})">
            <summary>
            Multiplies a matrix by a series of matrixes, and returns the series of products.
            </summary>
            <param name="lhs">
            Matrix on the left of the multiplication operation.
            </param>
            <param name="rhs">
            A series of matrixes on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of the <paramref name="lhs"/> 
            matrix multiplied by each <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`2},`2)">
            <summary>
            Multiplies a series of matrixes by another matrix, and returns the series of products.
            </summary>
            <param name="lhs">
            A series of matrixes on the left of the multiplication operation.
            </param>
            <param name="rhs">
            Matrix on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of each <paramref name="lhs"/> matrix 
            multiplied by the <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectors">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`1},`2)">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVectors">The row vectors to multiply.</param>
            <returns>The vector products.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`0[]})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectorsComponents">
            The column vectors to multiply as an enumeration of 
            arrays of components.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`0[]},`2)">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="rowVectorsComponents">
            The row vectors to multiply as an enumeration of arrays of components.
            </param>
            <param name="multiplier">Matrix to multiply by.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarAdd(`1,System.Double)">
            <summary>
            Adds a scalar to each component of a vector and returns the result.
            </summary>
            <param name="vector">The vector to add to.</param>
            <param name="scalar">The scalar to add.</param>
            <returns>
            The vector resulting from the sum of 
            <paramref name="scalar"/> with each component of 
            <paramref name="vector"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="vector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarAdd(`2,System.Double)">
            <summary>
            Adds a scalar to each component of a matrix and returns the result.
            </summary>
            <param name="matrix">The matrix to add to.</param>
            <param name="scalar">The scalar to add.</param>
            <returns>
            The matrix resulting from the sum of 
            <paramref name="scalar"/> with each component of 
            <paramref name="matrix"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarSubtract(`1,System.Double)">
            <summary>
            Subtracts a scalar from each component of a vector and returns the result.
            </summary>
            <param name="vector">The vector to subtract from.</param>
            <param name="scalar">The scalar to subtract.</param>
            <returns>
            The vector resulting from the difference of 
            <paramref name="scalar"/> from each component of 
            <paramref name="vector"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="vector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarSubtract(`2,System.Double)">
            <summary>
            Subtracts a scalar from each component of a matrix and returns the result.
            </summary>
            <param name="matrix">The matrix to subtract from.</param>
            <param name="scalar">The scalar to subtract.</param>
            <returns>
            The matrix resulting from the difference of 
            <paramref name="scalar"/> from each component of 
            <paramref name="matrix"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarMultiply(`1,`0)">
            <summary>
            Multiplies a vector by a scalar value.
            </summary>
            <param name="vector">The vector to multiply.</param>
            <param name="scalar">The scalar to multiply the matrix by.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="vector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.ScalarMultiply(`2,`0)">
            <summary>
            Multiplies a matrix by a scalar value.
            </summary>
            <param name="matrix">The matrix to multiply.</param>
            <param name="scalar">The scalar to multiply the matrix by.</param>
            <returns>The matrix product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Invert(`2)">
            <summary>
            Computes the inverse of the matrix.
            </summary>
            <param name="matrix">Matrix to compute the inverse for.</param>
            <returns>
            The inverse of the given <paramref name="matrix"/>, if one exists. 
            If the matrix is non-square, the pseudo-inverse is returned.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Negate(`2)">
            <summary>
            Negates a matrix.
            </summary>
            <param name="matrix">The matrix to negate.</param>
            <returns>
            A matrix identical to <paramref name="matrix"/> except with each element negated.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Rotate(`2,`1,System.Double)">
            <summary>
            Performs the rotate linear operation on the given <paramref name="matrix"/>.
            </summary>
            <param name="matrix">Matrix to rotate.</param>
            <param name="axis">A vector describing the axis of rotation.</param>
            <param name="radians">The measure of the angle to rotate through.</param>
            <returns>The matrix with the given rotation applied.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="axis"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="axis"/> vector has a 
            different number of components than the matrix rank.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the <paramref name="axis"/> vector has more 
            than one component with a value greater than 0.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Scale(`2,`1)">
            <summary>
            Performs the scale linear operation on a matrix.
            </summary>
            <param name="matrix">Matrix to scale.</param>
            <param name="scaleVector">
            A vector describing the magnitiudes of scale for each dimension.
            </param>
            <returns>The matrix with the given scale applied.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="scaleVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="scaleVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Shear(`2,`1)">
            <summary>
            Performs the shear linear operation on a matrix.
            </summary>
            <param name="matrix">Matrix to shear.</param>
            <param name="shearVector">
            A vector describing the magnitiudes of shear for each dimension.
            </param>
            <returns>The matrix with the given shear applied.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="shearVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="shearVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Translate(`2,`1)">
            <summary>
            Performs the translate affine operation on a matrix.
            </summary>
            <param name="affineMatrix">Affine matrix to translate.</param>
            <param name="translateVector">
            A vector describing the magnitiudes of translations for each dimension.
            </param>
            <returns>The matrix with the given translation applied.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="affineMatrix"/> is null or <paramref name="translateVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="translateVector"/> has a different number of 
            components than the dimension of the affine transform submatrix of <paramref name="affineMatrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.FrobeniusNorm(`2)">
            <summary>
            Computes the Frobenius norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The square root of the sum of the squares of each element 
            (or the square root of the sum of the squares 
            of the singluar values of the matrix).
            </value>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.OneNorm(`1)">
            <summary>
            Computes the one-norm (or Manhattan norm) on a vector.
            </summary>
            <param name="vector">The vector to compute the norm over.</param>
            <value>
            The sum of the absolute values of the components.
            </value>
            <returns>The one-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="vector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.OneNorm(`2)">
            <summary>
            Computes the one-norm (or Manhattan norm) on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each column.
            </value>
            <returns>The one-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.TwoNorm(`1)">
            <summary>
            Computes the two-norm on a vector.
            </summary>
            <param name="vector">The vector to compute the norm over.</param>
            <value>
            The Euclidean norm for a vector.
            </value>
            <returns>The two-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="vector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.TwoNorm(`2)">
            <summary>
            Computes the two-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The largest singular value for a matrix.
            </value>
            <returns>The two-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.InfinityNorm(`2)">
            <summary>
            Computes the infinity-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each row.
            </value>
            <returns>The infinity-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Determinant(`2)">
            <summary>
            Computes the determinant for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the determinant for.</param>
            <returns>The determinant of the matrix, if one exists.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the matrix is not square.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Rank(`2)">
            <summary>
            Computes the rank of a given matrix, disregarding negligable singluar values.
            </summary>
            <param name="matrix">The matrix to compute the rank for.</param>
            <returns>
            The rank of the given <paramref name="matrix"/>, not counting very small singular values.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Condition(`2)">
            <summary>
            Computes the condition number for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the condition number for.</param>
            <value>The condition number is a measure of the relative error in a solution for the matrix.</value>
            <returns>The condition number for the given <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Trace(`2)">
            <summary>
            Computes the trace value of the given matrix.
            </summary>
            <param name="matrix">The matrix to compute the trace for.</param>
            <value>The sum of the values in the diagonal of the matrix.</value>
            <returns>The value of the trace.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Solve(`2,`2)">
            <summary>
            Solves a linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.SolveTranspose(`2,`2)">
            <summary>
            Solves the transpose of the linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the transposed matrixes.
            </returns>
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.Transpose(`2)">
            <summary>
            Computes the transpose of a given matrix.
            </summary>
            <param name="matrix">The matrix to find the transpose of.</param>
            <returns>A matrix which is the transpose of <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.SetMatrix(`2,`2)">
            <summary>
            Sets the values of a <paramref name="target"/> matrix with those of
            a <paramref name="source"/> matrix.
            </summary>
            <param name="source">The matrix with the values to copy.</param>
            <param name="target">The matrix with the values to replace.</param>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.GetLUDecomposition(`2)">
            <summary>
            Computes an LU factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the LU factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ILUDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.GetQRDecomposition(`2)">
            <summary>
            Computes a QR factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the QR factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.IQRDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.GetCholeskyDecomposition(`2)">
            <summary>
            Computes a Cholesky factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the Cholesky factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ICholeskyDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.GetSingularValueDecomposition(`2)">
            <summary>
            Computes a singluar value factorization (SVD) for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the singluar value factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ISingularValueDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`3.GetEigenvalueDecomposition(`2)">
            <summary>
            Computes an eigenvalue factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the eigenvalue factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.IEigenvalueDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Add(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Adds two matrixes and returns the result.
            </summary>
            <param name="lhs">First matrix to add.</param>
            <param name="rhs">Second matrix to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Add(NPack.Interfaces.IVector{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Adds two vectors and returns the result.
            </summary>
            <param name="lhs">First vector to add.</param>
            <param name="rhs">Second vector to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Subtract(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Subtracts two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the subtraction operation.</param>
            <param name="rhs">Matrix on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Subtract(NPack.Interfaces.IVector{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Subtracts two vectors and returns the result.
            </summary>
            <param name="lhs">Vector on the left of the subtraction operation.</param>
            <param name="rhs">Vector on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <returns>
            The product of multiplying <paramref name="lhs"/> by <paramref name="rhs"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0}@,NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies two matrixes, with the result stored in the left matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0}@)">
            <summary>
            Multiplies two matrixes, with the result stored in the right matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVector">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IVector{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVector">The row vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},`0[])">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVector">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(`0[],NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVector">The row vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},System.Collections.Generic.IEnumerable{NPack.Interfaces.IMatrix{`0}})">
            <summary>
            Multiplies a matrix by a series of matrixes, and returns the series of products.
            </summary>
            <param name="lhs">
            Matrix on the left of the multiplication operation.
            </param>
            <param name="rhs">
            A series of matrixes on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of the <paramref name="lhs"/> 
            matrix multiplied by each <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(System.Collections.Generic.IEnumerable{NPack.Interfaces.IMatrix{`0}},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies a series of matrixes by another matrix, and returns the series of products.
            </summary>
            <param name="lhs">
            A series of matrixes on the left of the multiplication operation.
            </param>
            <param name="rhs">
            Matrix on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of each <paramref name="lhs"/> matrix 
            multiplied by the <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},System.Collections.Generic.IEnumerable{NPack.Interfaces.IVector{`0}})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectors">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(System.Collections.Generic.IEnumerable{NPack.Interfaces.IVector{`0}},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVectors">The row vectors to multiply.</param>
            <returns>The vector products.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(NPack.Interfaces.IMatrix{`0},System.Collections.Generic.IEnumerable{`0[]})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectorsComponents">
            The column vectors to multiply as an enumeration of 
            arrays of components.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Multiply(System.Collections.Generic.IEnumerable{`0[]},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="rowVectorsComponents">
            The row vectors to multiply as an enumeration of arrays of components.
            </param>
            <param name="multiplier">Matrix to multiply by.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.ScalarMultiply(NPack.Interfaces.IMatrix{`0},`0)">
            <summary>
            Multiplies a matrix by a scalar value.
            </summary>
            <param name="matrix">The matrix to multiply.</param>
            <param name="scalar">The scalar to multiply the matrix by.</param>
            <returns>The matrix product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Invert(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the inverse of the matrix.
            </summary>
            <param name="matrix">Matrix to compute the inverse for.</param>
            <returns>
            The inverse of the given <paramref name="matrix"/>, if one exists. 
            If the matrix is non-square, the pseudo-inverse is returned.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Negate(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Negates a matrix.
            </summary>
            <param name="matrix">The matrix to negate.</param>
            <returns>
            A matrix identical to <paramref name="matrix"/> except with each element negated.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Rotate(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IVector{`0},System.Double)">
            <summary>
            Performs the rotate linear operation on the given <paramref name="matrix"/>.
            </summary>
            <param name="matrix">Matrix to rotate.</param>
            <param name="axis">A vector describing the axis of rotation.</param>
            <param name="radians">The measure of the angle to rotate through.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="axis"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="axis"/> vector has a 
            different number of components than the matrix rank.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the <paramref name="axis"/> vector has more 
            than one component with a value greater than 0.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Scale(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Performs the scale linear operation on a matrix.
            </summary>
            <param name="matrix">Matrix to scale.</param>
            <param name="scaleVector">A vector describing the magnitiudes of scale for each dimension.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="scaleVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="scaleVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Shear(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Performs the shear linear operation on a matrix.
            </summary>
            <param name="matrix">Matrix to shear.</param>
            <param name="shearVector">A vector describing the magnitiudes of shear for each dimension.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="shearVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="shearVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Translate(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IVector{`0})">
            <summary>
            Performs the translate affine operation on a matrix.
            </summary>
            <param name="affineMatrix">Affine matrix to translate.</param>
            <param name="translateVector">A vector describing the magnitiudes of translations for each dimension.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="affineMatrix"/> is null or <paramref name="translateVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="translateVector"/> has a different number of 
            components than the dimension of the affine transform submatrix of <paramref name="affineMatrix"/>.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.FrobeniusNorm(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the Frobenius norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The square root of the sum of the squares of each element 
            (or the square root of the sum of the squares 
            of the singluar values of the matrix).
            </value>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.OneNorm(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the one-norm (or Manhattan norm) on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each column.
            </value>
            <returns>The one-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.TwoNorm(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the two-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The largest singular value for a matrix, or the Euclidean norm for a vector.
            </value>
            <returns>The two-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.InfinityNorm(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the infinity-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each row.
            </value>
            <returns>The infinity-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Determinant(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the determinant for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the determinant for.</param>
            <returns>The determinant of the matrix, if one exists.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the matrix is not square.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Rank(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the rank of a given matrix, disregarding negligable singluar values.
            </summary>
            <param name="matrix">The matrix to compute the rank for.</param>
            <returns>
            The rank of the given <paramref name="matrix"/>, not counting very small singular values.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Condition(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the condition number for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the condition number for.</param>
            <value>The condition number is a measure of the relative error in a solution for the matrix.</value>
            <returns>The condition number for the given <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Trace(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the trace value of the given matrix.
            </summary>
            <param name="matrix">The matrix to compute the trace for.</param>
            <value>The sum of the values in the diagonal of the matrix.</value>
            <returns>The value of the trace.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Solve(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Solves a linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.SolveTranspose(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Solves the transpose of the linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the transposed matrixes.
            </returns>
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.Transpose(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Computes the transpose of a given matrix.
            </summary>
            <param name="matrix">The matrix to find the transpose of.</param>
            <returns>A matrix which is the transpose of <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.Interfaces.IMatrixOperations`1.SetMatrix(NPack.Interfaces.IMatrix{`0},NPack.Interfaces.IMatrix{`0})">
            <summary>
            Sets the values of a <paramref name="target"/> matrix with those of
            a <paramref name="source"/> matrix.
            </summary>
            <param name="source">The matrix with the values to copy.</param>
            <param name="target">The matrix with the values to replace.</param>
        </member>
        <!-- Badly formed XML comment ignored for member "M:NPack.Interfaces.IMatrixOperations`1.GetLUDecomposition(NPack.Interfaces.IMatrix{`0})" -->
        <!-- Badly formed XML comment ignored for member "M:NPack.Interfaces.IMatrixOperations`1.GetQRDecomposition(NPack.Interfaces.IMatrix{`0})" -->
        <!-- Badly formed XML comment ignored for member "M:NPack.Interfaces.IMatrixOperations`1.GetCholeskyDecomposition(NPack.Interfaces.IMatrix{`0})" -->
        <!-- Badly formed XML comment ignored for member "M:NPack.Interfaces.IMatrixOperations`1.GetSingularValueDecomposition(NPack.Interfaces.IMatrix{`0})" -->
        <!-- Badly formed XML comment ignored for member "M:NPack.Interfaces.IMatrixOperations`1.GetEigenvalueDecomposition(NPack.Interfaces.IMatrix{`0})" -->
        <member name="T:NPack.Interfaces.IInvertible`1">
            <summary>
            Every class that defines an unary inverse operation such that
            <c>x * inverse(x) ~= e</c> and <c>inverse(inverse(x)) ~= x</c> for all x except Zero
            should consider implementing this interface. 
            Types that might want to implement this would be non-integral types <see cref="T:System.Single"/>, 
            <see cref="T:System.Double"/>, <see cref="T:System.Decimal"/>, but not integral types like <see cref="T:System.Int16"/>, 
            <see cref="T:System.Int32"/>, or <see cref="T:System.Int64"/>, etc.
            </summary>
            <typeparam name="T">Type which is invertible.</typeparam>
            <remarks>
            Adapted from an article on lambda-computing.com: 
            http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
            </remarks>
        </member>
        <member name="M:NPack.Interfaces.IInvertible`1.Inverse">
            <summary>
            Returns the inverse.
            </summary>
            <returns>The inverse.</returns>
        </member>
        <member name="P:NPack.Interfaces.IFactorization`1.InputMatrix">
            <summary>
            Gets the matrix which was factored (or decomposed).
            </summary>
        </member>
        <member name="T:NPack.DoubleComponent">
            <summary>
            A matrix component or matrix element which represents a 
            <see cref="T:System.Double"/>.
            </summary>
            <remarks>
            Use this structure as the type parameter for <see cref="T:NPack.Interfaces.IMatrix`1"/> when you want
            a matrix of Double values, since it implements <see cref="T:NPack.Interfaces.IComputable`1"/>, which 
            allows numerical operations on value types.
            </remarks>
        </member>
        <member name="M:NPack.DoubleComponent.#ctor(System.Double)">
            <summary>
             Creates a new <see cref="T:NPack.DoubleComponent"/> converting from the given <paramref name="value"/>.
            </summary>
            <param name="value">The Double used to set the DoubleComponent value.</param>
        </member>
        <member name="M:NPack.DoubleComponent.ToString">
            <summary>
            Returns String representation of this value.
            </summary>
            <returns>A formatted String displaying this value.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.GetHashCode">
            <summary>
            Generates a hash code for the DoubleComponent value.
            </summary>
            <returns>A value to represent this value in a hash table.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.op_Implicit(System.Double)~NPack.DoubleComponent">
            <summary>
            Implicitly converts a Double value to a DoubleComponent.
            </summary>
            <param name="value">Value to convert.</param>
            <returns>
            A DoubleComponent set to <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.op_Explicit(NPack.DoubleComponent)~System.Double">
            <summary>
            Explicitly converts a DoubleComponent to a Double.
            </summary>
            <param name="component">DoubleComponent to convert.</param>
            <returns>
            Value of type Double with the same value as the DoubleComponent.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.op_Addition(NPack.DoubleComponent,System.Double)">
            <summary>
            Adds a DoubleComponent and a Double.
            </summary>
            <param name="lhs">Left hand of the addition operation.</param>
            <param name="rhs">Right hand of the addition operation.</param>
            <returns>
            The sum of <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.op_Subtraction(NPack.DoubleComponent,System.Double)">
            <summary>
            Subtracts a Double from a DoubleComponent.
            </summary>
            <param name="lhs">Left hand of the subtraction operation.</param>
            <param name="rhs">Right hand of the subtraction operation.</param>
            <returns>
            The difference of <paramref name="lhs"/> and <paramref name="rhs"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Equals(NPack.DoubleComponent)">
            <summary>
            Evaluates equality of two DoubleComponent instances.
            </summary>
            <param name="other">The DoubleComponent to compare to.</param>
            <returns>
            True if the two DoubleComponent instances are equal; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.CompareTo(NPack.DoubleComponent)">
            <summary>
            Compares two DoubleComponent instances.
            </summary>
            <param name="other">The DoubleComponent to compare to.</param>
            <returns>
            0 if they are equal,
            1 if the called-on instance is greater, 
            -1 if <paramref name="other"/> is greater.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Add(NPack.DoubleComponent)">
            <summary>
            Adds two DoubleComponent values.
            </summary>
            <param name="a">The other addend.</param>
            <returns>
            The sum of this DoubleComponent and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Subtract(NPack.DoubleComponent)">
            <summary>
            Subtracts two DoubleComponent values.
            </summary>
            <param name="a">The subtrahend.</param>
            <returns>
            The difference of this DoubleComponent (minuend) and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Negative">
            <summary>
            Returns the negation of the DoubleComponent value. Also the
            additive inverse.
            </summary>
            <remarks>
            The value returns solves the following equation:
            <code>
            DoubleComponent a = 5, b = a.Negative();
            
            Assert.IsTrue(a.Add(b).Equals(0));
            </code>
            </remarks>
            <returns>The negated DoubleComponent.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Multiply(NPack.DoubleComponent)">
            <summary>
            Multiplies two DoubleComponents and returns the product.
            </summary>
            <param name="a">The multiplier.</param>
            <returns>
            The product of the DoubleComponent instance and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Divide(NPack.DoubleComponent)">
            <summary>
            Divides two DoubleComponent instances and returns the quotient.
            </summary>
            <param name="a">The divisor.</param>
            <returns>
            The quotient of dividing the DoubleComponent instance
            (the dividend) and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Equals(System.Double)">
            <summary>
            Evaluates equality of a DoubleComponent instance and a Double value.
            </summary>
            <param name="other">The Double value to compare to.</param>
            <returns>
            True if the two DoubleComponent instances are equal; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.CompareTo(System.Double)">
            <summary>
            Compares a DoubleComponent instance and a Double value.
            </summary>
            <param name="other">The Double value to compare to.</param>
            <returns>
            0 if they are equal,
            1 if the DoubleComponent instance is greater, 
            -1 if <paramref name="other"/> is greater.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IAddable{System#Double}#Add(System.Double)">
            <summary>
            Adds a DoubleComponent value and a Double.
            </summary>
            <param name="a">The other addend.</param>
            <returns>
            The sum of this DoubleComponent and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#ISubtractable{System#Double}#Subtract(System.Double)">
            <summary>
            Subtracts a Double value from the DoubleComponent value.
            </summary>
            <param name="a">The subtrahend.</param>
            <returns>
            The difference of this DoubleComponent (minuend) and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#INegatable{System#Double}#Negative">
            <summary>
            Returns the negation of the DoubleComponent value as a Double. Also the
            additive inverse.
            </summary>
            <remarks>
            The value returns solves the following equation:
            <code>
            DoubleComponent a = 5, b = a.Negative();
            
            Assert.IsTrue(a.Add(b).Equals(0));
            </code>
            </remarks>
            <returns>The negated DoubleComponent as a Double.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IMultipliable{System#Double}#Multiply(System.Double)">
            <summary>
            Multiplies the DoubleComponent with Double and returns the product.
            </summary>
            <param name="a">The multiplier.</param>
            <returns>
            The product of the DoubleComponent instance and 
            <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IDivisible{System#Double}#Divide(System.Double)">
            <summary>
            Divides the DoubleComponent by a Double and returns the quotient.
            </summary>
            <param name="a">The divisor.</param>
            <returns>
            The quotient of dividing the DoubleComponent instance
            (the dividend) and <paramref name="a"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.GreaterThan(NPack.DoubleComponent)">
            <summary>
            Evaluates if the DoubleComponent instance is greater than 
            the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the DoubleComponent instance is greater
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.GreaterThanOrEqualTo(NPack.DoubleComponent)">
            <summary>
            Evaluates if the DoubleComponent instance is greater than 
            or equal to the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the DoubleComponent instance is greater
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.LessThan(NPack.DoubleComponent)">
            <summary>
            Evaluates if the DoubleComponent instance is less than 
            the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the DoubleComponent instance is less
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.LessThanOrEqualTo(NPack.DoubleComponent)">
            <summary>
            Evaluates if the DoubleComponent instance is less than 
            or equal to the given value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the DoubleComponent instance is less
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.GreaterThan(System.Double)">
            <summary>
            Evaluates if the DoubleComponent instance is greater than 
            the given Double value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the DoubleComponent instance is greater
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.GreaterThanOrEqualTo(System.Double)">
            <summary>
            Evaluates if the DoubleComponent instance is greater than 
            or equal to the given Double value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the DoubleComponent instance is greater
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.LessThan(System.Double)">
            <summary>
            Evaluates if the DoubleComponent instance is less than 
            the given Double value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>True if the DoubleComponent instance is less
            than <paramref name="value"/>; false otherwise.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.LessThanOrEqualTo(System.Double)">
            <summary>
            Evaluates if the DoubleComponent instance is less than 
            or equal to the given Double value.
            </summary>
            <param name="value">The value to compare to.</param>
            <returns>
            True if the DoubleComponent instance is less
            than or equal to <paramref name="value"/>; false otherwise.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Power(System.Double)">
            <summary>
            Raises the DoubleComponent value to the given exponent.
            <paramref name="power"/>.
            </summary>
            <param name="power">
            The value of the exponent.
            </param>
            <returns>
            The value of the DoubleComponent (the base) 
            raised to the given power.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Sqrt">
            <summary>
            Computes the value of the square root of the DoubleComponent.
            </summary>
            <returns>
            The value of the square root of the DoubleComponent.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Log(System.Double)">
            <summary>
            Computes the log of the DoubleComponent in the
            <paramref name="newBase">given base</paramref>.
            </summary>
            <param name="newBase">The base to compute the log in.</param>
            <returns>
            The log of the DoubleComponent in the new base given.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Log">
            <summary>
            Computes the log of the DoubleComponent in base e.
            </summary>
            <returns>The natural log of the DoubleComponent.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Exp">
            <summary>
            Computes e to the power of the DoubleComponent.
            </summary>
            <returns>
            The natural log base, e, raised to the power 
            of the value of the DoubleComponent.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IExponential{System#Double}#Power(System.Double)">
            <summary>
            Raises the DoubleComponent value to the given 
            exponent, returned as a Double.
            <paramref name="power"/>.
            </summary>
            <param name="power">
            The value of the exponent.
            </param>
            <returns>
            The value of the DoubleComponent (the base) 
            raised to the given power.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IExponential{System#Double}#Sqrt">
            <summary>
            Computes the value of the square root of the DoubleComponent,
            returned as a Double.
            </summary>
            <returns>
            The value of the square root of the DoubleComponent.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IExponential{System#Double}#Log">
            <summary>
            Computes the log of the DoubleComponent in base 10,
            returned as a Double.
            </summary>
            <returns>
            The log of the DoubleComponent in the new base given.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IExponential{System#Double}#Exp">
            <summary>
            Computes the log of the DoubleComponent in base e,
            returned as a Double.
            </summary>
            <returns>The natural log of the DoubleComponent.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Abs">
            <summary>
            Computes the absolute value of the DoubleComponent.
            </summary>
            <returns>
            The absolute value of the DoubleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Set(System.Double)">
            <summary>
            Sets the value of the DoubleComponent.
            </summary>
            <param name="value">
            The value to set the DoubleComponent to, cast to a Double.
            </param>
            <returns>
            A DoubleComponent with the given <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IComputable{System#Double}#Abs">
            <summary>
            Computes the absolute value of the DoubleComponent,
            returned as a Double.
            </summary>
            <returns>
            The absolute value of the DoubleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.NPack#Interfaces#IComputable{System#Double}#Set(System.Double)">
            <summary>
            Computes the absolute value of the DoubleComponent,
            returned as a Double.
            </summary>
            <returns>
            The absolute value of the DoubleComponent's value.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.GetTypeCode">
            <summary>
            Gets the TypeCode value for the DoubleComponent.
            </summary>
            <returns><see cref="F:System.TypeCode.Double"/></returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToBoolean(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Boolean"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Boolean"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToByte(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Byte"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Byte"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToChar(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Char"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Char"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToDateTime(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.DateTime"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.DateTime"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToDecimal(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Decimal"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Decimal"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToDouble(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Double"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToInt16(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Int16"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Int16"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToInt32(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Int32"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Int32"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToInt64(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Int64"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Int64"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToSByte(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.SByte"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.SByte"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToSingle(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.Single"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.Single"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToString(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.String"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.String"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToType(System.Type,System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a value of the given type.
            </summary>
            <param name="conversionType">
            Type to convert to.
            </param>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>
            The DoubleComponent as a value of <paramref name="conversionType"/>.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToUInt16(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.UInt16"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.UInt16"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToUInt32(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.UInt32"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.UInt32"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToUInt64(System.IFormatProvider)">
            <summary>
            Converts the DoubleComponent to a <see cref="T:System.UInt64"/> value.
            </summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help convert the DoubleComponent value.
            </param>
            <returns>The DoubleComponent as a <see cref="T:System.UInt64"/>.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.ToString(System.String,System.IFormatProvider)">
            <summary>
            Generates a String representation of the DoubleComponent.
            </summary>
            <param name="format">The format String to use in formatting.</param>
            <param name="formatProvider">
            An <see cref="T:System.IFormatProvider"/> instance used to 
            help format the DoubleComponent value.
            </param>
            <returns>
            A formatted String which represents the DoubleComponent value.
            </returns>
        </member>
        <member name="M:NPack.DoubleComponent.Add(System.Double)">
            <summary>
            Returns the sum of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The sum.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Divide(System.Double)">
            <summary>
            Returns the quotient of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The quotient.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Multiply(System.Double)">
            <summary>
            Returns the product of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The factor to multiply by.</param>
            <returns>The product.</returns>
        </member>
        <member name="M:NPack.DoubleComponent.Subtract(System.Double)">
            <summary>
            Returns the difference of the Object and <paramref name="b"/>.
            It must not modify the value of the Object.
            </summary>
            <param name="b">The second operand.</param>
            <returns>The difference.</returns>
        </member>
        <member name="P:NPack.DoubleComponent.Zero">
            <summary>
            Returns the zero value for a DoubleComponent. Equal to 0F.
            </summary>
        </member>
        <member name="P:NPack.DoubleComponent.One">
            <summary>
            Returns the multiplicative identity.
            </summary>
        </member>
        <member name="P:NPack.DoubleComponent.NPack#Interfaces#IHasZero{System#Double}#Zero">
            <summary>
            Gets the additive identity as a Double: 0F.
            </summary>
        </member>
        <member name="P:NPack.DoubleComponent.NPack#Interfaces#IHasOne{System#Double}#One">
            <summary>
            Gets the multiplicative identity as a Double: 1F.
            </summary>
        </member>
        <member name="T:NPack.MersenneTwister">
            <summary>
            Generates pseudo-random numbers using the Mersenne Twister algorithm.
            </summary>
            <remarks>
            See <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html">
            http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html</a> for details
            on the algorithm.
            </remarks>
        </member>
        <member name="M:NPack.MersenneTwister.#ctor(System.Int32)">
            <summary>
            Creates a new pseudo-random number generator with a given seed.
            </summary>
            <param name="seed">A value to use as a seed.</param>
        </member>
        <member name="M:NPack.MersenneTwister.#ctor">
            <summary>
            Creates a new pseudo-random number generator with a default seed.
            </summary>
            <remarks>
            <c>new <see cref="T:System.Random"/>().<see cref="M:System.Random.Next"/></c> 
            is used for the seed.
            </remarks>
        </member>
        <member name="M:NPack.MersenneTwister.#ctor(System.Int32[])">
            <summary>
            Creates a pseudo-random number generator initialized with the given array.
            </summary>
            <param name="initKey">The array for initializing keys.</param>
        </member>
        <member name="M:NPack.MersenneTwister.NextUInt32">
            <summary>
            Returns the next pseudo-random <see cref="T:System.UInt32"/>.
            </summary>
            <returns>A pseudo-random <see cref="T:System.UInt32"/> value.</returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextUInt32(System.UInt32)">
            <summary>
            Returns the next pseudo-random <see cref="T:System.UInt32"/> 
            up to <paramref name="maxValue"/>.
            </summary>
            <param name="maxValue">
            The maximum value of the pseudo-random number to create.
            </param>
            <returns>
            A pseudo-random <see cref="T:System.UInt32"/> value which is at most <paramref name="maxValue"/>.
            </returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextUInt32(System.UInt32,System.UInt32)">
            <summary>
            Returns the next pseudo-random <see cref="T:System.UInt32"/> at least 
            <paramref name="minValue"/> and up to <paramref name="maxValue"/>.
            </summary>
            <param name="minValue">The minimum value of the pseudo-random number to create.</param>
            <param name="maxValue">The maximum value of the pseudo-random number to create.</param>
            <returns>
            A pseudo-random <see cref="T:System.UInt32"/> value which is at least 
            <paramref name="minValue"/> and at most <paramref name="maxValue"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If <c><paramref name="minValue"/> &gt;= <paramref name="maxValue"/></c>.
            </exception>
        </member>
        <member name="M:NPack.MersenneTwister.Next">
            <summary>
            Returns the next pseudo-random <see cref="T:System.Int32"/>.
            </summary>
            <returns>A pseudo-random <see cref="T:System.Int32"/> value.</returns>
        </member>
        <member name="M:NPack.MersenneTwister.Next(System.Int32)">
            <summary>
            Returns the next pseudo-random <see cref="T:System.Int32"/> up to <paramref name="maxValue"/>.
            </summary>
            <param name="maxValue">The maximum value of the pseudo-random number to create.</param>
            <returns>
            A pseudo-random <see cref="T:System.Int32"/> value which is at most <paramref name="maxValue"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            When <paramref name="maxValue"/> &lt; 0.
            </exception>
        </member>
        <member name="M:NPack.MersenneTwister.Next(System.Int32,System.Int32)">
            <summary>
            Returns the next pseudo-random <see cref="T:System.Int32"/> 
            at least <paramref name="minValue"/> 
            and up to <paramref name="maxValue"/>.
            </summary>
            <param name="minValue">The minimum value of the pseudo-random number to create.</param>
            <param name="maxValue">The maximum value of the pseudo-random number to create.</param>
            <returns>A pseudo-random Int32 value which is at least <paramref name="minValue"/> and at 
            most <paramref name="maxValue"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If <c><paramref name="minValue"/> &gt;= <paramref name="maxValue"/></c>.
            </exception>
        </member>
        <member name="M:NPack.MersenneTwister.NextBytes(System.Byte[])">
            <summary>
            Fills a buffer with pseudo-random bytes.
            </summary>
            <param name="buffer">The buffer to fill.</param>
            <exception cref="T:System.ArgumentNullException">
            If <c><paramref name="buffer"/> == <see langword="null"/></c>.
            </exception>
        </member>
        <member name="M:NPack.MersenneTwister.NextDouble">
            <summary>
            Returns the next pseudo-random <see cref="T:System.Double"/> value.
            </summary>
            <returns>A pseudo-random double floating point value.</returns>
            <remarks>
            <para>
            There are two common ways to create a double floating point using MT19937: 
            using <see cref="M:NPack.MersenneTwister.GenerateUInt32"/> and dividing by 0xFFFFFFFF + 1, 
            or else generating two double words and shifting the first by 26 bits and 
            adding the second.
            </para>
            <para>
            In a newer measurement of the randomness of MT19937 published in the 
            journal "Monte Carlo Methods and Applications, Vol. 12, No. 5-6, pp. 385 – 393 (2006)"
            entitled "A Repetition Test for Pseudo-Random Number Generators",
            it was found that the 32-bit version of generating a double fails at the 95% 
            confidence level when measuring for expected repetitions of a particular 
            number in a sequence of numbers generated by the algorithm.
            </para>
            <para>
            Due to this, the 53-bit method is implemented here and the 32-bit method
            of generating a double is not. If, for some reason,
            the 32-bit method is needed, it can be generated by the following:
            <code>
            (Double)NextUInt32() / ((UInt64)UInt32.MaxValue + 1);
            </code>
            </para>
            </remarks>
        </member>
        <member name="M:NPack.MersenneTwister.NextDouble(System.Boolean)">
            <summary>
            Returns a pseudo-random number greater than or equal to zero, and 
            either strictly less than one, or less than or equal to one, 
            depending on the value of the given parameter.
            </summary>
            <param name="includeOne">
            If <see langword="true"/>, the pseudo-random number returned will be 
            less than or equal to one; otherwise, the pseudo-random number returned will
            be strictly less than one.
            </param>
            <returns>
            If <paramref name="includeOne"/> is <see langword="true"/>, 
            this method returns a double-precision pseudo-random number greater than 
            or equal to zero, and less than or equal to one. 
            If <paramref name="includeOne"/> is <see langword="false"/>, this method
            returns a double-precision pseudo-random number greater than or equal to zero and
            strictly less than one.
            </returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextDoublePositive">
            <summary>
            Returns a pseudo-random number greater than 0.0 and less than 1.0.
            </summary>
            <returns>A pseudo-random number greater than 0.0 and less than 1.0.</returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextSingle">
            <summary>
            Returns a pseudo-random number between 0.0 and 1.0.
            </summary>
            <returns>
            A single-precision floating point number greater than or equal to 0.0, 
            and less than 1.0.
            </returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextSingle(System.Boolean)">
            <summary>
            Returns a pseudo-random number greater than or equal to zero, and either strictly
            less than one, or less than or equal to one, depending on the value of the
            given boolean parameter.
            </summary>
            <param name="includeOne">
            If <see langword="true"/>, the pseudo-random number returned will be 
            less than or equal to one; otherwise, the pseudo-random number returned will
            be strictly less than one.
            </param>
            <returns>
            If <paramref name="includeOne"/> is <see langword="true"/>, this method returns a
            single-precision pseudo-random number greater than or equal to zero, and less
            than or equal to one. If <paramref name="includeOne"/> is <see langword="false"/>, 
            this method returns a single-precision pseudo-random number greater than or equal to zero and
            strictly less than one.
            </returns>
        </member>
        <member name="M:NPack.MersenneTwister.NextSinglePositive">
            <summary>
            Returns a pseudo-random number greater than 0.0 and less than 1.0.
            </summary>
            <returns>A pseudo-random number greater than 0.0 and less than 1.0.</returns>
        </member>
        <member name="M:NPack.MersenneTwister.GenerateUInt32">
            <summary>
            Generates a new pseudo-random <see cref="T:System.UInt32"/>.
            </summary>
            <returns>A pseudo-random <see cref="T:System.UInt32"/>.</returns>
        </member>
        <member name="T:NPack.Interfaces.IEigenvalueDecomposition`2">
            <summary>
            An interface for an eigenvalue decomposition of a matrix.
            </summary>
            <typeparam name="TComponent">Type of component in the matrix.</typeparam>
        </member>
        <member name="T:NPack.Interfaces.IVectorBuffer`2">
            <summary>
            Defines a vector buffer for storing vector data in a specific format.
            </summary>
            <typeparam name="TVector">The type of vector to store.</typeparam>
            <typeparam name="TComponent">The type of component in the vector.</typeparam>
            <remarks>
            <para>
            A vector buffer allows specific storage of vectors in memory. This is useful
            since modern hardware treats vector data specially, and a specific storage
            format can take advantage of these capabilities. For example, SSE and SSE2 instructions
            are found on almost all of the non-embedded, general-purpose CPUs on the market,
            and these instructions work best when memory is aligned to 16-byte boundaries. 
            Using a Structure of Arrays (SoA) data format is also preferable when performing
            matrix computations.
            </para>
            </remarks>
        </member>
        <member name="T:NPack.SingleComplexComponent">
            <summary>
            A matrix component or matrix element which represents a complex number with a 
            <see cref="T:System.Single"/> real component and imaginary coefficient.
            </summary>
            <remarks>
            Use this structure as the type parameter for <see cref="!:Matrix&lt;T&gt;"/> when you want
            a matrix of single floating point complex values, since it implements <see cref="T:NPack.Interfaces.IComputable`1"/>, 
            which allows numerical operations on value types.
            </remarks>
        </member>
        <member name="T:NPack.MatrixOperationOrder">
            <summary>
            Specifies the order of the matrix operation.
            </summary>
        </member>
        <member name="F:NPack.MatrixOperationOrder.Default">
            <summary>
            Depends on the matrix subclass implementation.
            </summary>
        </member>
        <member name="F:NPack.MatrixOperationOrder.Prepend">
            <summary>
            The transform matrix is before the operation.
            </summary>
        </member>
        <member name="F:NPack.MatrixOperationOrder.Append">
            <summary>
            The transform matrix is after the operation.
            </summary>
        </member>
        <member name="T:NPack.Interfaces.INumericalMatrix`1">
            <summary>
            An interface to a matrix used to model systems numerically.
            </summary>
            <typeparam name="T">Type of element in the matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.INumericalMatrix`1.Solve(NPack.Interfaces.IMatrix{`0})">
            <summary>
            Returns a matrix which is the solution to the 
            <paramref name="b">given matrix</paramref>, if one exists.
            </summary>
            <param name="b">Matrix to solve this linear system for.</param>
            <returns>The solution, x, to the equation <c>Ax = B</c>, where the 
            <see cref="!:NumericalMatrix&lt;T&gt;"/> is the "A" matrix and the <paramref name="b"/>
            parameter is B.</returns>
        </member>
        <member name="P:NPack.Interfaces.INumericalMatrix`1.FrobeniusNorm">
            <summary>
            Gets the Frobenius norm for the matrix.
            </summary>
            <value>
            The square root of sum of squares of all elements.
            </value>
        </member>
        <member name="P:NPack.Interfaces.INumericalMatrix`1.InfinityNorm">
            <summary>
            Gets the infinity (or max) norm for the matrix.
            </summary>
            <value>
            The maximum row sum.
            </value>
        </member>
        <member name="P:NPack.Interfaces.INumericalMatrix`1.Norm1">
            <summary>
            Gets the 1 norm for the matrix.
            </summary>
            <value>
            The maximum column sum.
            </value>
        </member>
        <member name="P:NPack.Interfaces.INumericalMatrix`1.Trace">
            <summary>
            Gets the trace of the matrix.
            </summary>
            <returns>
            Sum of the diagonal elements.
            </returns>
        </member>
        <member name="T:NPack.Interfaces.IMatrix`2">
            <summary>
            An interface to a generic matrix.
            </summary>
            <typeparam name="TComponent">Type of element in the matrix.</typeparam>
            <typeparam name="TMatrix">Type of matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`2.Clone">
            <summary>
            Makes an element-by-element copy of the matrix.
            </summary>
            <returns>An exact copy of the matrix.</returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`2.GetMatrix(System.Int32[],System.Int32,System.Int32)">
            <summary>
            Gets a submatrix.
            </summary>
            <param name="rowIndexes">The indexes of the rows to include.</param>
            <param name="startColumn">The starting column to include.</param>
            <param name="endColumn">The ending column to include.</param>
            <returns>
            A submatrix with rows given by <paramref name="rowIndexes"/> and columns 
            <paramref name="startColumn"/> through <paramref name="endColumn"/>.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`2.GetMatrix(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a submatrix.
            </summary>
            <param name="i0">Initial row index.</param>
            <param name="i1">Final row index.</param>
            <param name="j0">Initial column index.</param>
            <param name="j1">Final column index.</param>
            <returns>
            A submatrix with rows given by the rows <paramref name="i0" />
            through <paramref name="i1"/>
            and columns <paramref name="j0"/> through <paramref name="j1"/>.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.IMatrix`2.Transpose">
            <summary>
            Returns the transpose of the matrix.
            </summary>
            <returns>The matrix with the rows as columns and columns as rows.</returns>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.Determinant">
            <summary>
            Gets the determinant for the matrix, if it exists.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.ColumnCount">
            <summary>
            Gets the number of columns in the matrix.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.Format">
            <summary>
            Gets the format of the matrix, either row-major or column-major.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.IsSingular">
            <summary>
            Gets true if the matrix is singular (non-invertible).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.IsInvertible">
            <summary>
            Gets true if the matrix is invertible (non-singular).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.Inverse">
            <summary>
            Gets the inverse of the matrix, if one exists.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.IsSquare">
            <summary>
            Gets true if the matrix is square (<c>RowCount == ColumnCount != 0</c>).
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.IsSymmetrical">
            <summary>
            Gets true if the matrix is symmetrical.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.RowCount">
            <summary>
            Gets the number of rows in the matrix.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IMatrix`2.Item(System.Int32,System.Int32)">
            <summary>
            Gets or sets an element in the matrix.
            </summary>
            <param name="row">The index of the row of the element.</param>
            <param name="column">The index of the column of the element.</param>
            <returns>The value of the element at the specified row and column.</returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Scale(`0)">
            <summary>
            Scales the matrix by the given <paramref name="amount"/> in all orthoganal columns.
            </summary>
            <param name="amount">Amount to scale by.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Scale(`0,NPack.MatrixOperationOrder)">
            <summary>
            Scales the matrix by the given <paramref name="amount"/> in all orthoganal columns.
            </summary>
            <param name="amount">Amount to scale by.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Scale(`1)">
            <summary>
            Scales the matrix by the given vector <paramref name="scaleVector"/>.
            </summary>
            <param name="scaleVector">
            A vector with scaling components which 
            correspond to the affine transform dimensions.
            </param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Scale(`1,NPack.MatrixOperationOrder)">
            <summary>
            Scales the matrix by the given vector <paramref name="scaleVector"/>.
            </summary>
            <param name="scaleVector">
            A vector with scaling components which 
            correspond to the affine transform dimensions.
            </param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Shear(`1)">
            <summary>
            Applies a shear to the transform.
            </summary>
            <param name="shearVector">The vector used to compute the shear.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.Shear(`1,NPack.MatrixOperationOrder)">
            <summary>
            Applies a shear to the transform.
            </summary>
            <param name="shearVector">The vector used to compute the shear.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.RotateAlong(`1,System.Double)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/>.
            </summary>
            <param name="axis">
            The axis to rotate around. May be an addition of the basis vectors.
            </param>
            <param name="radians">Angle to rotate through.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.RotateAlong(`1,System.Double,NPack.MatrixOperationOrder)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/>.
            </summary>
            <param name="axis">
            The axis to rotate around. May be an addition of the basis vectors.
            </param>
            <param name="radians">Angle to rotate through.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.TransformMatrix(`2)">
            <summary>
            Applies this transform to the given <paramref name="input"/> matrix.
            </summary>
            <param name="input">Matrix to transform.</param>
            <returns>
            The multiplication of this transform matrix with the input matrix.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.TransformVector(`1)">
            <summary>
            Applies this transform to the given <paramref name="input"/> vector.
            </summary>
            <param name="input">Vector to transform.</param>
            <returns>
            The multiplication of this transform matrix with the input vector.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.TransformVector(`0[])">
            <summary>
            Applies this transform to the given <paramref name="input"/> vector in place.
            </summary>
            <param name="input">Vector to transform.</param>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.TransformVectors(System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Applies this transform to the given <paramref name="input"/> vectors.
            </summary>
            <param name="input">Set of vectors to transform.</param>
            <returns>
            The multiplication of this transform matrix with each of the input vectors.
            </returns>
        </member>
        <member name="M:NPack.Interfaces.ITransformMatrix`3.TransformVectors(System.Collections.Generic.IEnumerable{`0[]})">
            <summary>
            Applies this transform to the given <paramref name="input"/> vectors in place.
            </summary>
            <param name="input">Set of vectors to transform.</param>
        </member>
        <member name="T:NPack.MatrixFormat">
            <summary>
            Specifies whether the matrix is a row-major or column-major matrix.
            </summary>
        </member>
        <member name="F:NPack.MatrixFormat.Unspecified">
            <summary>
             Allows a matrix to be flexible how it stores elements.
            </summary>
        </member>
        <member name="F:NPack.MatrixFormat.RowMajor">
            <summary>
             Specifies the convention where the matrix is a set of row vectors.
            </summary>
        </member>
        <member name="F:NPack.MatrixFormat.ColumnMajor">
            <summary>
             Specifies the convention where the matrix is a set of column vectors.
            </summary>
        </member>
        <member name="T:NPack.Interfaces.IVertexStream`2">
            <summary>
            Interface to a stream of vertex data.
            </summary>
            <typeparam name="TVertex">The type of vertex to stream.</typeparam>
            <typeparam name="TVertexComponent">The type of component in the vertex.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IVertexStream`2.GetVertexes">
            <summary>
            Gets an enumeration of the vertices in the object.
            </summary>
            <returns>An enumeration of vertex data contained by the object.</returns>
        </member>
        <member name="M:NPack.Interfaces.IVertexStream`2.GetVertexes(NPack.Interfaces.ITransformMatrix{`1})">
            <summary>
            Gets an enumeration of the vertices in the object, applying a
            <paramref name="transform"/> to each vertex as it is returned.
            </summary>
            <param name="transform">A transform to apply to the vertex.</param>
            <returns>An enumeration of vertex data contained by the object.</returns>
        </member>
        <member name="T:NPack.Interfaces.IVector`1">
            <summary>
            A vector.
            </summary>
            <typeparam name="TComponent">Type of components in the vector.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IVector`1.Clone">
            <summary>
            Creates a component-by-component copy of the vector.
            </summary>
            <returns>A copy of the vector.</returns>
        </member>
        <member name="M:NPack.Interfaces.IVector`1.Negative">
            <summary>
            Returns the vector multiplied by -1.
            </summary>
            <returns>The vector when multiplied by -1.</returns>
        </member>
        <member name="P:NPack.Interfaces.IVector`1.ComponentCount">
            <summary>
            Gets the number of components in the vector.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IVector`1.Components">
            <summary>
            Gets or sets the vector component array.
            </summary>
        </member>
        <member name="P:NPack.Interfaces.IVector`1.Item(System.Int32)">
            <summary>
            Gets or sets a component in the vector.
            </summary>
            <param name="index">The index of the component.</param>
            <returns>The value of the component at the given <paramref name="index"/>.</returns>
        </member>
        <member name="T:NPack.ClrMatrixOperations`3">
            <summary>
            Pure managed code matrix operations implementation.
            </summary>
            <remarks>
            Uses fully managed code (no C++ or native interop) to calculate 
            matrix operations. While not as highly performing as other operations engines, 
            it can be used in partial trust environments.
            </remarks>
            <typeparam name="TComponent">Type of matrix element.</typeparam>
            <typeparam name="TVector">Type of vector.</typeparam>
            <typeparam name="TMatrix">Type of matrix.</typeparam>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Add(`2,`2)">
            <summary>
            Adds two matrixes and returns the result.
            </summary>
            <param name="lhs">First matrix to add.</param>
            <param name="rhs">Second matrix to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Add(`1,`1)">
            <summary>
            Adds two vectors and returns the result.
            </summary>
            <param name="lhs">First vector to add.</param>
            <param name="rhs">Second vector to add.</param>
            <value>lhs + rhs</value>
            <returns>
            The sum of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Subtract(`2,`2)">
            <summary>
            Subtracts two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the subtraction operation.</param>
            <param name="rhs">Matrix on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the row count or column count of <paramref name="lhs"/> 
            does not equal the row count or column count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Subtract(`1,`1)">
            <summary>
            Subtracts two vectors and returns the result.
            </summary>
            <param name="lhs">Vector on the left of the subtraction operation.</param>
            <param name="rhs">Vector on the right of the subtraction operation.</param>
            <value>lhs - rhs</value>
            <returns>
            The difference of the <paramref name="lhs"/> and <paramref name="rhs"/> vectors.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the component count of <paramref name="lhs"/> 
            does not equal the component count of <paramref name="rhs"/>, respectively.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,`2)">
            <summary>
            Multiplies two matrixes and returns the result.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <returns>
            The product of multiplying <paramref name="lhs"/> by <paramref name="rhs"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2@,`2)">
            <summary>
            Multiplies two matrixes, with the result stored in the left matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,`2@)">
            <summary>
            Multiplies two matrixes, with the result stored in the right matrix.
            </summary>
            <param name="lhs">Matrix on the left of the multiplication operation.</param>
            <param name="rhs">Matrix on the right of the multiplication operation.</param>
            <value>lhs * rhs</value>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or if <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`2})">
            <summary>
            Multiplies a matrix by a series of matrixes, and returns the series of products.
            </summary>
            <param name="lhs">
            Matrix on the left of the multiplication operation.
            </param>
            <param name="rhs">
            A series of matrixes on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of the <paramref name="lhs"/> 
            matrix multiplied by each <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`2},`2)">
            <summary>
            Multiplies a series of matrixes by another matrix, and returns the series of products.
            </summary>
            <param name="lhs">
            A series of matrixes on the left of the multiplication operation.
            </param>
            <param name="rhs">
            Matrix on the right of the multiplication operation.
            </param>
            <returns>
            An enumeration of the products of each <paramref name="lhs"/> matrix 
            multiplied by the <paramref name="rhs"/> matrix.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="lhs"/> is null or <paramref name="rhs"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the column count of <paramref name="lhs"/> 
            does not equal the row count of <paramref name="rhs"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`0[]})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectorsComponents">
            The column vectors to multiply as an enumeration of 
            arrays of components.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`0[]},`2)">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="rowVectorsComponents">
            The row vectors to multiply as an enumeration of arrays of components.
            </param>
            <param name="multiplier">Matrix to multiply by.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectorsComponents"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,`1)">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVector">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`1,`2)">
            <summary>
            Multiplies a vector by a matrix, where the vector is represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVector">The row vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVector"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(`2,System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in column form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="columnVectors">The column vector to multiply.</param>
            <returns>The vector product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="columnVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Multiply(System.Collections.Generic.IEnumerable{`1},`2)">
            <summary>
            Multiplies a series of vectors by a matrix, 
            where the vectors are represented in row form.
            </summary>
            <param name="multiplier">Matrix to multiply by.</param>
            <param name="rowVectors">The row vectors to multiply.</param>
            <returns>The vector products.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="multiplier"/> is null or 
            <paramref name="rowVectors"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.ScalarMultiply(`2,`0)">
            <summary>
            Multiplies a matrix by a scalar value.
            </summary>
            <param name="matrix">The matrix to multiply.</param>
            <param name="scalar">The scalar to multiply the matrix by.</param>
            <returns>The matrix product.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.OneNorm(`2)">
            <summary>
            Computes the one-norm (or Manhattan norm) on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each column.
            </value>
            <returns>The one-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.TwoNorm(`2)">
            <summary>
            Computes the two-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The largest singular value for a matrix, or the Euclidean norm for a vector.
            </value>
            <returns>The two-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.InfinityNorm(`2)">
            <summary>
            Computes the infinity-norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The maximum value of the sum of the absolute value 
            of the elements of each row.
            </value>
            <returns>The infinity-norm.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.FrobeniusNorm(`2)">
            <summary>
            Computes the Frobenius norm on a matrix.
            </summary>
            <param name="matrix">The matrix to compute the norm over.</param>
            <value>
            The square root of the sum of the squares of each element 
            (or the square root of the sum of the squares 
            of the singluar values of the matrix).
            </value>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Determinant(`2)">
            <summary>
            Computes the determinant for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the determinant for.</param>
            <returns>The determinant of the matrix, if one exists.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the matrix is not square.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Rank(`2)">
            <summary>
            Computes the rank of a given matrix, disregarding negligable singluar values.
            </summary>
            <param name="matrix">The matrix to compute the rank for.</param>
            <returns>
            The rank of the given <paramref name="matrix"/>, not counting very small singular values.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Condition(`2)">
            <summary>
            Computes the condition number for a matrix.
            </summary>
            <param name="matrix">The matrix to compute the condition number for.</param>
            <value>The condition number is a measure of the relative error in a solution for the matrix.</value>
            <returns>The condition number for the given <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Trace(`2)">
            <summary>
            Computes the trace value of the given matrix.
            </summary>
            <param name="matrix">The matrix to compute the trace for.</param>
            <value>The sum of the values in the diagonal of the matrix.</value>
            <returns>The value of the trace.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Solve(`2,`2)">
            <summary>
            Solves a linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the matrixes.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Transpose(`2)">
            <summary>
            Computes the transpose of a given matrix.
            </summary>
            <param name="matrix">The matrix to find the transpose of.</param>
            <returns>A matrix which is the transpose of <paramref name="matrix"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.SolveTranspose(`2,`2)">
            <summary>
            Solves the transpose of the linear system.
            </summary>
            <param name="a">Coefficient matrix.</param>
            <param name="b">Result matrix.</param>
            <returns>
            A matrix of solutions to the unknowns in the transposed matrixes.
            </returns>
            Thrown if <paramref name="a"/> is null or if <paramref name="b"/> is null.
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Invert(`2)">
            <summary>
            Computes the inverse of the matrix.
            </summary>
            <param name="matrix">Matrix to compute the inverse for.</param>
            <returns>
            The inverse of the given <paramref name="matrix"/>, if one exists. 
            If the matrix is non-square, the pseudo-inverse is returned.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Negate(`2)">
            <summary>
            Negates a matrix.
            </summary>
            <param name="matrix">The matrix to negate.</param>
            <returns>
            A matrix identical to <paramref name="matrix"/> except with each element negated.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Negate(`0[][])">
            <summary>
            Negates a matrix in place.
            </summary>
            <param name="matrix">The matrix to negate each element of.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Rotate(`2,`1,System.Double)">
            <summary>
            Performs the rotate linear operation on the given <paramref name="matrix"/>.
            </summary>
            <param name="matrix">Matrix to rotate.</param>
            <param name="axis">A vector describing the axis of rotation.</param>
            <param name="radians">The measure of the angle to rotate through.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or if matrix is not a 2D matrix 
            (rank 2 for linear, rank 3 for affine) and <paramref name="axis"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="axis"/> vector has a 
            different number of components than the matrix rank.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the <paramref name="axis"/> vector has more 
            than one component with a value greater than 0.
            </exception>
            <exception cref="T:System.NotSupportedException">
            If <paramref name="matrix"/> is not square or 
            not of rank 2 or 3 for linear matrixes, or rank 3 or 4 for affine matrixes.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Scale(`2,`1)">
            <summary>
            Performs the scale linear operation on a matrix.
            </summary>
            <param name="matrix">Matrix to scale.</param>
            <param name="scaleVector">
            A vector describing the magnitiudes of scale for each dimension.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="scaleVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="scaleVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Shear(`2,`1)">
            <summary>
            Performs the shear linear operation on a matrix.
            </summary>
            <param name="matrix">
            Matrix to shear.
            </param>
            <param name="shearVector">
            A vector describing the magnitiudes of shear for each dimension.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null or <paramref name="shearVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="shearVector"/> has a different number of 
            components than the dimension of the linear transform submatrix of <paramref name="matrix"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.Translate(`2,`1)">
            <summary>
            Performs the translate affine operation on a matrix.
            </summary>
            <param name="affineMatrix">
            Affine matrix to translate.
            </param>
            <param name="translateVector">
            A vector describing the magnitiudes of translations for each dimension.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="affineMatrix"/> is null or 
            <paramref name="translateVector"/> is null.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="translateVector"/> has a different number of 
            components than the dimension of the affine transform submatrix of 
            <paramref name="affineMatrix"/>.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.GetLUDecomposition(`2)">
            <summary>
            Computes an LU factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the LU factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ILUDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.GetQRDecomposition(`2)">
            <summary>
            Computes a QR factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the QR factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.IQRDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.GetCholeskyDecomposition(`2)">
            <summary>
            Computes a Cholesky factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the Cholesky factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ICholeskyDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.GetSingularValueDecomposition(`2)">
            <summary>
            Computes a singluar value factorization (SVD) for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the singluar value factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.ISingularValueDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="M:NPack.ClrMatrixOperations`3.GetEigenvalueDecomposition(`2)">
            <summary>
            Computes an eigenvalue factorization for the matrix.
            </summary>
            <param name="matrix">Matrix to compute the eigenvalue factorization for.</param>
            <returns>
            An <see cref="T:NPack.Interfaces.IEigenvalueDecomposition`2"/> instance describing the factorization result.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="matrix"/> is null.
            </exception>
        </member>
        <member name="T:NPack.ManagedVectorBuffer`2">
            <summary>
            Defines a vector buffer for storing vector data in a specific format. The 
            <see cref="T:NPack.ManagedVectorBuffer`2"/> stores vectors
            on the managed heap, and is fully verifiable.
            </summary>
            <typeparam name="TVector">The type of vector to store.</typeparam>
            <typeparam name="TComponent">The type of component in the vector.</typeparam>
            <remarks>
            <para>
            A vector buffer allows specific storage of vectors in memory. This is useful
            since modern hardware treats vector data specially, and a specific storage
            format can take advantage of these capabilities. For example, SSE and SSE2 instructions
            are found on almost all of the non-embedded, general-purpose CPUs on the market,
            and these instructions work best when memory is aligned to 16-byte boundaries. 
            Using a Structure of Arrays (SoA) data format is also preferable when performing
            matrix computations.
            </para>
            </remarks>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.#ctor(System.Int32,System.Boolean,NPack.Interfaces.IBufferedVectorFactory{`0,`1})">
            <summary>
            Creates a new <see cref="T:NPack.ManagedVectorBuffer`2"/>
            for vectors of size <paramref name="vectorDimension"/>, including space 
            for an extra component if <paramref name="isHomogeneous"/> is <see langword="true"/>. 
            The initial capacity of the created buffer places it in the CLR's Large Object Heap.
            </summary>
            <param name="vectorDimension">The size, or number of components, of each vector.</param>
            <param name="isHomogeneous">
            <see langword="true"/> if the vector is represented in homogeneous coordinates 
            (allowing affine transforms through matrix operations).
            </param>
            <param name="vectorFactory">
            A factory used to create vectors of type <typeparamref name="TVector"/>.
            </param>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.#ctor(System.Int32,System.Boolean,NPack.Interfaces.IBufferedVectorFactory{`0,`1},System.Int32)">
            <summary>
            Creates a new <see cref="T:NPack.ManagedVectorBuffer`2"/> with
            initial capacity <paramref name="initialCapacity"/> for vectors of size
            <paramref name="vectorDimension"/>, including space for an extra component
            if <paramref name="isHomogeneous"/> is <see langword="true"/>. 
            </summary>
            <param name="vectorDimension">The size, or number of components, of each vector.</param>
            <param name="isHomogeneous">
            <see langword="true"/> if the vector is represented in homogeneous coordinates 
            (allowing affine transforms through matrix operations).
            </param>
            <param name="vectorFactory">
            A factory used to create vectors of type <typeparamref name="TVector"/>.
            </param>
            <param name="initialCapacity">The initial capacity for the buffer.</param>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.#ctor(System.Int32,System.Boolean,NPack.Interfaces.IBufferedVectorFactory{`0,`1},System.Int32,System.Int32)">
            <summary>
            Creates a new <see cref="T:NPack.ManagedVectorBuffer`2"/> with
            initial capacity <paramref name="initialCapacity"/> for vectors of size
            <paramref name="vectorDimension"/>, including space for an extra component
            if <paramref name="isHomogeneous"/> is <see langword="true"/>. 
            </summary>
            <param name="vectorDimension">The size, or number of components, of each vector.</param>
            <param name="isHomogeneous">
            <see langword="true"/> if the vector is represented in homogeneous coordinates 
            (allowing affine transforms through matrix operations).
            </param>
            <param name="vectorFactory">
            A factory used to create vectors of type <typeparamref name="TVector"/>.
            </param>
            <param name="initialCapacity">The initial capacity for the buffer.</param>
            <param name="maximumCapacity">
            The maximum capacity of the vector buffer.
            </param>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Add(`1,`1)">
            <summary>
            Adds components to the buffer as a vector. Returns the resulting
            <typeparamref name="TVector"/> instance.
            </summary>
            <param name="v0">The first component which make up the vector.</param>
            <param name="v1">The second component which make up the vector.</param>
            <returns>
            The resulting vector after adding the given components.
            </returns>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Add(`1,`1,`1)">
            <summary>
            Adds components to the buffer as a vector. Returns the resulting
            <typeparamref name="TVector"/> instance.
            </summary>
            <param name="v0">The first component which make up the vector.</param>
            <param name="v1">The second component which make up the vector.</param>
            <param name="v2">The second component which make up the vector.</param>
            <returns>
            The resulting vector after adding the given components.
            </returns>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Add(`1[])">
            <summary>
            Adds an array of components to the buffer as a vector. Returns the resulting
            <typeparamref name="TVector"/> instance.
            </summary>
            <param name="components">The components which make up the vector.</param>
            <returns>
            The resulting vector after adding the given <paramref name="components"/>.
            </returns>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Add(NPack.Interfaces.IVector{`1})">
            <summary>
            Adds an <see cref="T:NPack.Interfaces.IVector`1"/> to the buffer.
            </summary>
            <param name="item">The vector to add to the buffer.</param>
            <returns>The index of the added vector.</returns>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Clear">
            <summary>
            Clears the buffer of all vector instances.
            </summary>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.CopyTo(`0[],System.Int32,System.Int32)">
            <summary>
            Copies the buffer to the given array.
            </summary>
            <param name="array">The array to copy the buffer to.</param>
            <param name="startIndex">The index of the buffer to start copying at.</param>
            <param name="endIndex">The index of the buffer to end copying at.</param>
        </member>
        <member name="M:NPack.ManagedVectorBuffer`2.Contains(NPack.Interfaces.IVector{`1})">
            <summary>
            Returns <see langword="true"/> if the buffer contains 
            the given <see cref="T:NPack.Interfaces.IVector`1"/>.
            </summary>
            <param name="item">The vector to check if the buffer contains.</param>
            <returns>
            <see langword="true"/> if the buffer contains <paramref name="item"/>;
            <see langword="false"/> otherwise.
            </returns>
        </member>
        <member name="P:NPack.ManagedVectorBuffer`2.Count">
            <summary>
            Gets the number of vectors in the buffer.
            </summary>
        </member>
        <member name="P:NPack.ManagedVectorBuffer`2.IsReadOnly">
            <summary>
            Gets <see langword="true"/> if the buffer is read-only.
            </summary>
        </member>
        <member name="P:NPack.ManagedVectorBuffer`2.MaximumSize">
            <summary>
            Gets or sets the maximum size of the buffer, in number of vectors.
            </summary>
        </member>
        <member name="P:NPack.ManagedVectorBuffer`2.Item(System.Int32)">
            <summary>
            Gets or sets the <typeparamref name="TVector"/> at the given
            <paramref name="index"/>.
            </summary>
            <param name="index">The index of the vector to access.</param>
            <returns>
            The <typeparamref name="TVector"/> at <paramref name="index"/>.
            </returns>
        </member>
        <member name="P:NPack.ManagedVectorBuffer`2.VectorLength">
            <summary>
            Gets the length, or number of components, in the vectors stored
            in the buffer.
            </summary>
        </member>
        <member name="T:NPack.Interfaces.IAffineTransformMatrix`3">
            <summary>
            An interface to an affine transformation matrix.
            </summary>
            <typeparam name="TComponent">Type of element in the matrix.</typeparam>
            <typeparam name="TVector">Type of vector.</typeparam>
            <typeparam name="TMatrix">Type of matrix.</typeparam>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.Reset">
            <summary>
            Resets the affine transform to the identity matrix (a diagonal of one).
            </summary>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.RotateAt(`1,`1,System.Double)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/> 
            at the given <paramref name="point"/>.
            </summary>
            <param name="point">Point at which to compute the rotation.</param>
            <param name="axis">The axis to rotate around.</param>
            <param name="radians">Angle to rotate through.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.RotateAt(`1,`1,System.Double,NPack.MatrixOperationOrder)">
            <summary>
            Rotates the affine transform around the given <paramref name="axis"/> 
            at the given <paramref name="point"/>.
            </summary>
            <param name="point">Point at which to compute the rotation.</param>
            <param name="axis">The axis to rotate around.</param>
            <param name="radians">Angle to rotate through.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.Translate(`0)">
            <summary>
            Translates the affine transform by the given amount in each dimension.
            </summary>
            <param name="amount">Amount to translate by.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.Translate(`0,NPack.MatrixOperationOrder)">
            <summary>
            Translates the affine transform by the given amount in each dimension.
            </summary>
            <param name="amount">Amount to translate by.</param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.Translate(`1)">
            <summary>
            Translates the affine transform by the given translation vector.
            </summary>
            <param name="translateVector">
            A vector whose components will translate the transform 
            in the corresponding dimension.
            </param>
        </member>
        <member name="M:NPack.Interfaces.IAffineTransformMatrix`3.Translate(`1,NPack.MatrixOperationOrder)">
            <summary>
            Translates the affine transform by the given translation vector.
            </summary>
            <param name="translateVector">
            A vector whose components will translate the transform 
            in the corresponding dimension.
            </param>
            <param name="order">Order in which to apply the operation.</param>
        </member>
        <member name="P:NPack.Interfaces.IAffineTransformMatrix`3.Inverse">
            <summary>
            Gets the inverse of the affine transform.
            </summary>
        </member>
    </members>
</doc>
